Mercurial > nomad > experimental
changeset 1299:577429b83842
objstore: move objstore_unlink to obj_unlink.c
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Mon, 19 Dec 2022 20:11:20 -0500 |
parents | d9e0b59c30f0 |
children | 9f9224e301a2 |
files | src/objstore/obj_ops.c src/objstore/obj_unlink.c |
diffstat | 2 files changed, 47 insertions(+), 47 deletions(-) [+] |
line wrap: on
line diff
--- a/src/objstore/obj_ops.c Mon Dec 19 20:11:14 2022 -0500 +++ b/src/objstore/obj_ops.c Mon Dec 19 20:11:20 2022 -0500 @@ -218,50 +218,3 @@ return ret; } - -int objstore_unlink(struct objstore_open_obj_info *diropen, const char *name, - const struct noid *desired, bool rmdir) -{ - struct objver *newver; - struct obj *dir; - struct txn *txn; - int ret; - - if (!diropen || !name) - return -EINVAL; - - dir = diropen->obj; - - if (diropen->qualified) - return -EROFS; - - MXLOCK(&dir->lock); - - if (!NATTR_ISDIR(diropen->ver->attrs.mode)) { - ret = -ENOTDIR; - goto err; - } - - txn = txn_begin(diropen->ver->obj->clone); - if (IS_ERR(txn)) { - ret = PTR_ERR(txn); - goto err; - } - - newver = obj_cow(txn, diropen); - if (IS_ERR(newver)) { - ret = PTR_ERR(newver); - goto err_txn; - } - - ret = dir_unlink(txn, newver, name, desired, rmdir); - -err_txn: - ret = txn_commitabort(txn, ret); - newver = NULL; /* prevent accidental use */ - -err: - MXUNLOCK(&dir->lock); - - return ret; -}
--- a/src/objstore/obj_unlink.c Mon Dec 19 20:11:14 2022 -0500 +++ b/src/objstore/obj_unlink.c Mon Dec 19 20:11:20 2022 -0500 @@ -141,3 +141,50 @@ return 0; } + +int objstore_unlink(struct objstore_open_obj_info *diropen, const char *name, + const struct noid *desired, bool rmdir) +{ + struct objver *newver; + struct obj *dir; + struct txn *txn; + int ret; + + if (!diropen || !name) + return -EINVAL; + + dir = diropen->obj; + + if (diropen->qualified) + return -EROFS; + + MXLOCK(&dir->lock); + + if (!NATTR_ISDIR(diropen->ver->attrs.mode)) { + ret = -ENOTDIR; + goto err; + } + + txn = txn_begin(diropen->ver->obj->clone); + if (IS_ERR(txn)) { + ret = PTR_ERR(txn); + goto err; + } + + newver = obj_cow(txn, diropen); + if (IS_ERR(newver)) { + ret = PTR_ERR(newver); + goto err_txn; + } + + ret = dir_unlink(txn, newver, name, desired, rmdir); + +err_txn: + ret = txn_commitabort(txn, ret); + newver = NULL; /* prevent accidental use */ + +err: + MXUNLOCK(&dir->lock); + + return ret; +}