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] > + 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