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

Reply via email to