fixed compilation errors
authorAndrew Tridgell <tridge@samba.org>
Tue, 26 Aug 2008 01:38:58 +0000 (11:38 +1000)
committerAndrew Tridgell <tridge@samba.org>
Tue, 26 Aug 2008 01:38:58 +0000 (11:38 +1000)
hacksm.h
hacksm_ls.c
hacksm_migrate.c
hacksmd.c
store.h
store_file.c

index ad65fb5..e4f16b3 100644 (file)
--- a/hacksm.h
+++ b/hacksm.h
@@ -24,8 +24,6 @@
 
 const char *dmapi_event_string(dm_eventtype_t ev);
 void hsm_recover_session(const char *name, dm_sessid_t *sid);
-int hsm_store_open(dev_t device, ino_t inode, int flags);
-int hsm_store_unlink(dev_t device, ino_t inode);
 void msleep(int t);
 void hsm_cleanup_tokens(dm_sessid_t sid, dm_response_t response, int retcode);
 const char *timestring(void);
@@ -42,7 +40,7 @@ struct hsm_attr {
        uint64_t size;
        uint64_t device;
        uint64_t inode;
-       enum hsm_migrate_state state;
+       uint8_t  state;
 };
 
 #define HSM_MAGIC "HSM1"
index 3da5d97..bb582c1 100644 (file)
@@ -55,7 +55,7 @@ static void hsm_init(void)
 
        hsm_recover_session(SESSION_NAME, &dmapi.sid);
 
-       store_ctx = hsm_store_init(void);
+       store_ctx = hsm_store_init();
        if (store_ctx == NULL) {
                printf("Unable to open HSM store - %s\n", strerror(errno));
                exit(1);
@@ -128,7 +128,6 @@ static void hsm_ls(const char *path)
        dm_attrname_t attrname;
        size_t rlen;
        struct hsm_attr h;
-       int fd;
 
        dmapi.token = DM_NO_TOKEN;
 
@@ -180,14 +179,14 @@ static void hsm_ls(const char *path)
 
        /* if it is migrated then also check the store file is OK */
        if (h.state == HSM_STATE_MIGRATED) {
-               struct hsm_store_handle *h;
-               h = hsm_store_open(store_ctx, h.device, h.inode, true);
-               if (h == NULL) {
+               struct hsm_store_handle *handle;
+               handle = hsm_store_open(store_ctx, h.device, h.inode, true);
+               if (handle == NULL) {
                        printf("Failed to open store file for %s - %s (0x%llx:0x%llx)\n", 
                               path, strerror(errno), 
                               (unsigned long long)h.device, (unsigned long long)h.inode);
                }
-               hsm_store_close(h);
+               hsm_store_close(handle);
        }
 
        printf("m %7u %d  %s\n", (unsigned)h.size, (int)h.state, path);
index c594a5d..1aacfe6 100644 (file)
@@ -52,7 +52,7 @@ static void hsm_init(void)
 
        hsm_recover_session(SESSION_NAME, &dmapi.sid);
 
-       store_ctx = hsm_store_init(void);
+       store_ctx = hsm_store_init();
        if (store_ctx == NULL) {
                printf("Unable to open HSM store - %s\n", strerror(errno));
                exit(1);
@@ -68,7 +68,7 @@ static int hsm_migrate(const char *path)
        void *hanp = NULL;
        size_t hlen = 0;
        dm_attrname_t attrname;
-       char buf[0x1000];
+       uint8_t buf[0x1000];
        size_t rlen;
        struct stat st;
        struct hsm_attr h;
@@ -76,6 +76,7 @@ static int hsm_migrate(const char *path)
        dm_boolean_t exactFlag;
        off_t ofs;
        int retval = 1;
+       struct hsm_store_handle *handle;
 
        dmapi.token = DM_NO_TOKEN;
 
@@ -134,7 +135,7 @@ static int hsm_migrate(const char *path)
                if (h.state == HSM_STATE_START) {
                        /* a migration has died on this file */
                        printf("Continuing migration of partly migrated file\n");
-                       hsm_store_unlink(h.device, h.inode);
+                       hsm_store_remove(store_ctx, h.device, h.inode);
                } else {
                        /* it is either fully migrated, or waiting recall */
                        printf("Not migrating already migrated file %s\n", path);
@@ -158,8 +159,8 @@ static int hsm_migrate(const char *path)
        }
 
        /* open up the store file */
-       h = hsm_store_open(store_ctx, st.st_dev, st.st_ino, O_CREAT|O_TRUNC|O_WRONLY);
-       if (h == NULL) {
+       handle = hsm_store_open(store_ctx, st.st_dev, st.st_ino, false);
+       if (handle == NULL) {
                printf("Failed to open store file for %s - %s\n", path, strerror(errno));
                goto respond;
        }
@@ -167,9 +168,9 @@ static int hsm_migrate(const char *path)
        /* read the file data and store it away */
        ofs = 0;
        while ((ret = dm_read_invis(dmapi.sid, hanp, hlen, dmapi.token, ofs, sizeof(buf), buf)) > 0) {
-               if (hsm_store_write(h, buf, ret) != ret) {
+               if (hsm_store_write(handle, buf, ret) != ret) {
                        printf("Failed to write to store for %s - %s\n", path, strerror(errno));
-                       hsm_store_close(h);
+                       hsm_store_close(handle);
                        hsm_store_remove(store_ctx, st.st_dev, st.st_ino);
                        goto respond;
                }
@@ -177,10 +178,11 @@ static int hsm_migrate(const char *path)
        }
        if (ret == -1) {
                printf("failed dm_read_invis on %s - %s\n", path, strerror(errno));
-               hsm_store_unlink(st.st_dev, st.st_ino);
+               hsm_store_close(handle);
+               hsm_store_remove(store_ctx, st.st_dev, st.st_ino);
                goto respond;
        }
-       hsm_store_close(h);
+       hsm_store_close(handle);
 
        /* now upgrade to a exclusive right on the file before we
           change the dmattr and punch holes in the file. */
@@ -202,7 +204,7 @@ static int hsm_migrate(const char *path)
                            sizeof(h), (void*)&h);
        if (ret == -1) {
                printf("failed dm_set_dmattr on %s - %s\n", path, strerror(errno));
-               hsm_store_unlink(st.st_dev, st.st_ino);
+               hsm_store_remove(store_ctx, st.st_dev, st.st_ino);
                goto respond;
        }
 
@@ -214,7 +216,7 @@ static int hsm_migrate(const char *path)
        ret = dm_set_region(dmapi.sid, hanp, hlen, dmapi.token, 1, &region, &exactFlag);
        if (ret == -1) {
                printf("failed dm_set_region on %s - %s\n", path, strerror(errno));
-               hsm_store_unlink(st.st_dev, st.st_ino);
+               hsm_store_remove(store_ctx, st.st_dev, st.st_ino);
                goto respond;
        }
 
@@ -235,7 +237,7 @@ static int hsm_migrate(const char *path)
        ret = dm_punch_hole(dmapi.sid, hanp, hlen, dmapi.token, 0, st.st_size);
        if (ret == -1) {
                printf("failed dm_punch_hole on %s - %s\n", path, strerror(errno));
-               hsm_store_unlink(st.st_dev, st.st_ino);
+               hsm_store_remove(store_ctx, st.st_dev, st.st_ino);
                goto respond;
        }
 
@@ -246,7 +248,7 @@ static int hsm_migrate(const char *path)
                            0, sizeof(h), (void*)&h);
        if (ret == -1) {
                printf("failed dm_set_dmattr on %s - %s\n", path, strerror(errno));
-               hsm_store_unlink(st.st_dev, st.st_ino);
+               hsm_store_remove(store_ctx, st.st_dev, st.st_ino);
                goto respond;
        }
 
index b46a906..6c78367 100644 (file)
--- a/hacksmd.c
+++ b/hacksmd.c
@@ -54,7 +54,7 @@ static void hsm_init(void)
                hsm_store_shutdown(store_ctx);
        }
 
-       store_ctx = hsm_store_init(void);
+       store_ctx = hsm_store_init();
        if (store_ctx == NULL) {
                printf("Unable to open HSM store - %s\n", strerror(errno));
                exit(1);
@@ -144,12 +144,12 @@ static void hsm_handle_recall(dm_eventmsg_t *msg)
        dm_token_t token = msg->ev_token;
        struct hsm_attr h;
        dm_boolean_t exactFlag;
-       char buf[0x10000];
+       uint8_t buf[0x10000];
        off_t ofs;
        dm_right_t right;
        dm_response_t response = DM_RESP_CONTINUE;
        int retcode = 0;
-       struct hsm_store_handle *h;
+       struct hsm_store_handle *handle;
 
         ev = DM_GET_VALUE(msg, ev_data, dm_data_event_t *);
         hanp = DM_GET_VALUE(ev, de_handle, void *);
@@ -224,8 +224,8 @@ static void hsm_handle_recall(dm_eventmsg_t *msg)
 
        /* get the migrated data from the store, and put it in the
           file with invisible writes */
-       h = hsm_store_open(store_ctx, h.device, h.inode, O_RDONLY);
-       if (h == NULL) {
+       handle = hsm_store_open(store_ctx, h.device, h.inode, true);
+       if (handle == NULL) {
                printf("Failed to open store file for file 0x%llx:0x%llx - %s\n",
                       (unsigned long long)h.device, (unsigned long long)h.inode,
                       strerror(errno));
@@ -247,17 +247,18 @@ static void hsm_handle_recall(dm_eventmsg_t *msg)
        }
 
        ofs = 0;
-       while ((ret = hsm_store_read(h, buf, sizeof(buf))) > 0) {
+       while ((ret = hsm_store_read(handle, buf, sizeof(buf))) > 0) {
                int ret2 = dm_write_invis(dmapi.sid, hanp, hlen, token, DM_WRITE_SYNC, ofs, ret, buf);
                if (ret2 != ret) {
                        printf("dm_write_invis failed - %s\n", strerror(errno));
                        retcode = EIO;
                        response = DM_RESP_ABORT;
+                       hsm_store_close(handle);
                        goto done;
                }
                ofs += ret;
        }
-       hsm_store_close(h);
+       hsm_store_close(handle);
 
        /* remove the attribute from the file - it is now fully recalled */
        ret = dm_remove_dmattr(dmapi.sid, hanp, hlen, token, 0, &attrname);
diff --git a/store.h b/store.h
index b3c6926..91b3010 100644 (file)
--- a/store.h
+++ b/store.h
@@ -32,3 +32,9 @@ int hsm_store_close(struct hsm_store_handle *);
    shutdown the link to the store
  */
 void hsm_store_shutdown(struct hsm_store_context *);
+
+/*
+  remove a file from the store
+ */
+int hsm_store_remove(struct hsm_store_context *ctx,
+                    dev_t device, ino_t inode);
index 6b84ffc..3a8f162 100644 (file)
@@ -33,7 +33,7 @@ struct hsm_store_context *hsm_store_init(void)
                return NULL;
        }
 
-       ctx->basepath = HSM_STORE;
+       ctx->basepath = HSM_STORE_PATH;
        if (stat(ctx->basepath, &st) != 0 ||
            !S_ISDIR(st.st_mode)) {
                errno = EINVAL;