Mercurial > nomad
changeset 894:f089372dfed0
objstore: move objstore_create to obj_create.c
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Mon, 19 Dec 2022 19:51:07 -0500 |
parents | 7d90b5dc4fe3 |
children | d9e0b59c30f0 |
files | src/objstore/obj_create.c src/objstore/obj_ops.c |
diffstat | 2 files changed, 55 insertions(+), 55 deletions(-) [+] |
line wrap: on
line diff
--- a/src/objstore/obj_create.c Mon Dec 19 19:50:34 2022 -0500 +++ b/src/objstore/obj_create.c Mon Dec 19 19:51:07 2022 -0500 @@ -125,3 +125,58 @@ return ret; } + +int objstore_create(struct objstore_open_obj_info *diropen, const char *name, + uint32_t owner, uint32_t group, uint16_t mode, uint64_t dev, + struct noid *child) +{ + struct objver *newver; + struct obj *dir; + struct txn *txn; + int ret; + + if (!diropen || !name || !child) + return -EINVAL; + + dir = diropen->obj; + + if (diropen->qualified) + return -EROFS; + + /* must have a type, grafts are created differently */ + if (_NATTR_ISNOTYPE(mode) || NATTR_ISGRAFT(mode)) + return -EINVAL; + + if (NATTR_ISBLK(mode) || NATTR_ISCHR(mode)) + return -ENOTSUP; /* not yet supported */ + + 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_create(txn, newver, name, owner, group, mode, child); + +err_txn: + ret = txn_commitabort(txn, ret); + newver = NULL; /* prevent accidental use */ + +err: + MXUNLOCK(&dir->lock); + + return ret; +}
--- a/src/objstore/obj_ops.c Mon Dec 19 19:50:34 2022 -0500 +++ b/src/objstore/obj_ops.c Mon Dec 19 19:51:07 2022 -0500 @@ -323,58 +323,3 @@ return ret; } - -int objstore_create(struct objstore_open_obj_info *diropen, const char *name, - uint32_t owner, uint32_t group, uint16_t mode, uint64_t dev, - struct noid *child) -{ - struct objver *newver; - struct obj *dir; - struct txn *txn; - int ret; - - if (!diropen || !name || !child) - return -EINVAL; - - dir = diropen->obj; - - if (diropen->qualified) - return -EROFS; - - /* must have a type, grafts are created differently */ - if (_NATTR_ISNOTYPE(mode) || NATTR_ISGRAFT(mode)) - return -EINVAL; - - if (NATTR_ISBLK(mode) || NATTR_ISCHR(mode)) - return -ENOTSUP; /* not yet supported */ - - 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_create(txn, newver, name, owner, group, mode, child); - -err_txn: - ret = txn_commitabort(txn, ret); - newver = NULL; /* prevent accidental use */ - -err: - MXUNLOCK(&dir->lock); - - return ret; -}