blobfs: cleanup and add comments in deleted file cleanup path
Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: I30675083dcb7dda47ac62eaf124614033ff9c587 Reviewed-on: https://review.gerrithub.io/401702 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
0847f27b54
commit
981607175b
@ -527,7 +527,7 @@ file_alloc(struct spdk_filesystem *fs)
|
|||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void iter_delete_cb(void *ctx, int bserrno);
|
static void fs_load_done(void *ctx, int bserrno);
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_handle_deleted_files(struct spdk_fs_request *req)
|
_handle_deleted_files(struct spdk_fs_request *req)
|
||||||
@ -540,7 +540,7 @@ _handle_deleted_files(struct spdk_fs_request *req)
|
|||||||
|
|
||||||
deleted_file = TAILQ_FIRST(&args->op.fs_load.deleted_files);
|
deleted_file = TAILQ_FIRST(&args->op.fs_load.deleted_files);
|
||||||
TAILQ_REMOVE(&args->op.fs_load.deleted_files, deleted_file, tailq);
|
TAILQ_REMOVE(&args->op.fs_load.deleted_files, deleted_file, tailq);
|
||||||
spdk_bs_delete_blob(fs->bs, deleted_file->id, iter_delete_cb, req);
|
spdk_bs_delete_blob(fs->bs, deleted_file->id, fs_load_done, req);
|
||||||
free(deleted_file);
|
free(deleted_file);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -549,13 +549,21 @@ _handle_deleted_files(struct spdk_fs_request *req)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
iter_delete_cb(void *ctx, int bserrno)
|
fs_load_done(void *ctx, int bserrno)
|
||||||
{
|
{
|
||||||
struct spdk_fs_request *req = ctx;
|
struct spdk_fs_request *req = ctx;
|
||||||
struct spdk_fs_cb_args *args = &req->args;
|
struct spdk_fs_cb_args *args = &req->args;
|
||||||
struct spdk_filesystem *fs = args->fs;
|
struct spdk_filesystem *fs = args->fs;
|
||||||
|
|
||||||
|
/* The filesystem has been loaded. Now check if there are any files that
|
||||||
|
* were marked for deletion before last unload. Do not complete the
|
||||||
|
* fs_load callback until all of them have been deleted on disk.
|
||||||
|
*/
|
||||||
if (_handle_deleted_files(req) == 0) {
|
if (_handle_deleted_files(req) == 0) {
|
||||||
|
/* We found a file that's been marked for deleting but not actually
|
||||||
|
* deleted yet. This function will get called again once the delete
|
||||||
|
* operation is completed.
|
||||||
|
*/
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -661,11 +669,7 @@ load_cb(void *ctx, struct spdk_blob_store *bs, int bserrno)
|
|||||||
}
|
}
|
||||||
|
|
||||||
common_fs_bs_init(fs, bs);
|
common_fs_bs_init(fs, bs);
|
||||||
if (_handle_deleted_files(req) == 0) {
|
fs_load_done(req, 0);
|
||||||
return;
|
|
||||||
}
|
|
||||||
args->fn.fs_op_with_handle(args->arg, fs, 0);
|
|
||||||
free_fs_request(req);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user