diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-12-22 20:47:24 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-12-22 20:47:24 -0500 |
commit | 0e8cc7b5b3a46ea16f74c161f0fd12966deb4d93 (patch) | |
tree | dfef6032de2f7758135d376b10369f28ea328771 /fs/bcachefs/fs.c | |
parent | aaa55da315fcbb0387271d473303f52b5f7f3d45 (diff) |
lockdep_debuglockdep_debug
Diffstat (limited to 'fs/bcachefs/fs.c')
-rw-r--r-- | fs/bcachefs/fs.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/fs/bcachefs/fs.c b/fs/bcachefs/fs.c index bc280a0a957d..e006807bc260 100644 --- a/fs/bcachefs/fs.c +++ b/fs/bcachefs/fs.c @@ -1596,26 +1596,20 @@ static struct bch_fs *bch2_path_to_fs(const char *path) return c ?: ERR_PTR(-ENOENT); } -static char **split_devs(const char *_dev_name, unsigned *nr) +static darray_string bch2_split_devs(const char *_dev_name, unsigned *nr) { char *dev_name = NULL, **devs = NULL, *s; size_t i = 0, nr_devs = 0; + DARRAY( - dev_name = kstrdup(_dev_name, GFP_KERNEL); + char *dev_name = kstrdup(_dev_name, GFP_KERNEL), *s = dev_name; if (!dev_name) return NULL; - for (s = dev_name; s; s = strchr(s + 1, ':')) - nr_devs++; + while ((s = strsep(&dev_name, ":"))) { - devs = kcalloc(nr_devs + 1, sizeof(const char *), GFP_KERNEL); - if (!devs) { - kfree(dev_name); - return NULL; - } - - while ((s = strsep(&dev_name, ":"))) devs[i++] = s; + } *nr = nr_devs; return devs; |