On 11/20/2013 10:18 PM, David Sterba wrote:
On Fri, Nov 15, 2013 at 07:25:34PM +0800, Anand Jain wrote:
static int btrfs_scan_kernel(void *search)
{
- int ret = 0, fd;
- FILE *f;
- struct mntent *mnt;
- struct btrfs_ioctl_fs_info_args fs_info_arg;
- struct btrfs_ioctl_dev_info_args *dev_info_arg = NULL;
- struct btrfs_ioctl_space_args *space_info_arg;
+ int ret = 0;
char label[BTRFS_LABEL_SIZE];
-
- f = setmntent("/proc/self/mounts", "r");
- if (f == NULL)
- return 1;
-
- memset(label, 0, sizeof(label));
- while ((mnt = getmntent(f)) != NULL) {
- if (strcmp(mnt->mnt_type, "btrfs"))
+ char mnt[BTRFS_PATH_NAME_MAX + 1];
+ struct btrfs_ioctl_fslist *fslist;
+ struct btrfs_ioctl_fslist *fslist_saved;
[CC] cmds-send.o
cmds-filesystem.c: In function ‘btrfs_scan_kernel’:
cmds-filesystem.c:461:29: warning: variable ‘fslist_saved’ set but not used
[-Wunused-but-set-variable]
Thanks David. That was something for later todo which I missed.
sorry my mistake. Sent out v5.
+ u64 cnt_fs;
+ int cnt_mnt;
+ __u8 *fsid;
+ __u64 flags;
+
+ ret = get_fslist(&fslist, &cnt_fs);
+ if (ret)
+ return ret;
+ fslist_saved = fslist;
+ while (cnt_fs--) {
+ fsid = fslist->fsid;
+ flags = fslist->flags;
+ fslist++;
+ if (!(flags & BTRFS_FS_MOUNTED))
continue;
- ret = get_fs_info(mnt->mnt_dir, &fs_info_arg,
- &dev_info_arg);
+ memset(mnt, 0, BTRFS_PATH_NAME_MAX + 1);
+ memset(label, 0, sizeof(label));
+ ret = fsid_to_mntpt(fsid, mnt, &cnt_mnt);
if (ret)
return ret;
-
- if (get_label_mounted(mnt->mnt_dir, label)) {
- kfree(dev_info_arg);
+ if (get_label_mounted(mnt, label))
return 1;
- }
- if (search && !match_search_item_kernel(fs_info_arg.fsid,
- mnt->mnt_dir, label, search)) {
- kfree(dev_info_arg);
+
+ if (search && !match_search_item_kernel(fsid,
+ mnt, label, search))
continue;
- }
- fd = open(mnt->mnt_dir, O_RDONLY);
- if ((fd != -1) && !get_df(fd, &space_info_arg)) {
- print_one_fs(&fs_info_arg, dev_info_arg,
- space_info_arg, label, mnt->mnt_dir);
- kfree(space_info_arg);
- memset(label, 0, sizeof(label));
- }
- if (fd != -1)
- close(fd);
- kfree(dev_info_arg);
+ handle_print(mnt, label);
if (search)
return 0;
}
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html