Whamcloud - gitweb
LU-3363 api: HSM import uses new released pattern
[fs/lustre-release.git] / lustre / utils / liblustreapi.c
index 155f5c3..818d54c 100644 (file)
@@ -524,7 +524,7 @@ static int get_param_lmv(const char *path,
 
 static int get_mds_md_size(const char *path)
 {
-       int md_size = lov_mds_md_size(LOV_MAX_STRIPE_COUNT, LOV_MAGIC_V3);
+       int md_size = lov_user_md_size(LOV_MAX_STRIPE_COUNT, LOV_USER_MAGIC_V3);
        char buf[80];
        int rc;
 
@@ -2186,10 +2186,12 @@ static void lov_dump_user_lmm_header(struct lov_user_md *lum, char *path,
                 }
         }
 
-        if ((verbose & VERBOSE_DETAIL) && !is_dir) {
-                llapi_printf(LLAPI_MSG_NORMAL, "lmm_stripe_pattern: %x%c",
-                             lum->lmm_pattern, nl);
-        }
+       if ((verbose & VERBOSE_LAYOUT) && !is_dir) {
+               if (verbose & ~VERBOSE_LAYOUT)
+                       llapi_printf(LLAPI_MSG_NORMAL, "%spattern:        ",
+                                    prefix);
+               llapi_printf(LLAPI_MSG_NORMAL, "%.x%c", lum->lmm_pattern, nl);
+       }
 
         if ((verbose & VERBOSE_GENERATION) && !is_dir) {
                 if (verbose & ~VERBOSE_GENERATION)
@@ -2703,11 +2705,12 @@ static int cb_find_init(char *path, DIR *parent, DIR *dir,
 
         /* Request MDS for the stat info if some of these parameters need
          * to be compared. */
-        if (param->obduuid    || param->mdtuuid || param->check_uid ||
-            param->check_gid || param->check_pool || param->atime   ||
-            param->ctime     || param->mtime || param->check_size ||
-            param->check_stripecount || param->check_stripesize)
-                decision = 0;
+       if (param->obduuid   || param->mdtuuid || param->check_uid ||
+           param->check_gid || param->check_pool || param->atime   ||
+           param->ctime     || param->mtime || param->check_size ||
+           param->check_stripecount || param->check_stripesize ||
+           param->check_layout)
+               decision = 0;
 
         if (param->type && checked_type == 0)
                 decision = 0;
@@ -2812,6 +2815,18 @@ static int cb_find_init(char *path, DIR *parent, DIR *dir,
                         goto decided;
         }
 
+       if (param->check_layout) {
+               __u32 found;
+
+               found = (param->lmd->lmd_lmm.lmm_pattern & param->layout);
+               if ((param->lmd->lmd_lmm.lmm_pattern == 0xFFFFFFFF) ||
+                   (found && param->exclude_layout) ||
+                   (!found && !param->exclude_layout)) {
+                       decision = -1;
+                       goto decided;
+               }
+       }
+
         /* If an OBD UUID is specified but none matches, skip this file. */
         if ((param->obduuid && param->obdindex == OBD_NOT_FOUND) ||
             (param->mdtuuid && param->mdtindex == OBD_NOT_FOUND))
@@ -3098,7 +3113,7 @@ static int cb_getstripe(char *path, DIR *parent, DIR *d, void *data,
                         * The object_seq needs to be set for the "(Default)"
                         * prefix to be displayed. */
                        struct lov_user_md *lmm = &param->lmd->lmd_lmm;
-                       lmm->lmm_magic = LOV_MAGIC_V1;
+                       lmm->lmm_magic = LOV_USER_MAGIC_V1;
                        if (!param->raw)
                                ostid_set_seq(&lmm->lmm_oi,
                                              FID_SEQ_LOV_DEFAULT);
@@ -3464,7 +3479,9 @@ static int rmtacl_notify(int ops)
                close(fd);
                 if (rc < 0) {
                         rc = -errno;
-                        llapi_error(LLAPI_MSG_ERROR, rc, "ioctl %d\n", fd);
+                       llapi_error(LLAPI_MSG_ERROR, rc,
+                                   "ioctl RMTACL on '%s' err %d\n",
+                                   mnt->mnt_dir, rc);
                        goto out;
                 }
 
@@ -4219,13 +4236,18 @@ int llapi_create_volatile_idx(char *directory, int idx, int mode)
                return -errno;
        }
        if (idx == -1)
-               sprintf(filename, LUSTRE_VOLATILE_HDR"::%.4X", random);
+               snprintf(filename, sizeof(filename),
+                        LUSTRE_VOLATILE_HDR"::%.4X", random);
        else
-               sprintf(filename, LUSTRE_VOLATILE_IDX"%.4X", 0, random);
+               snprintf(filename, sizeof(filename),
+                        LUSTRE_VOLATILE_IDX"%.4X", 0, random);
 
-       sprintf(file_path, "%s/%s", directory, filename);
+       rc = snprintf(file_path, sizeof(file_path),
+                     "%s/%s", directory, filename);
+       if (rc >= sizeof(file_path))
+               return -E2BIG;
 
-       fd = open(file_path, O_RDWR|O_CREAT|mode, S_IRUSR|S_IWUSR);
+       fd = open(file_path, (O_RDWR | O_CREAT | mode), (S_IRUSR | S_IWUSR));
        if (fd < 0) {
                llapi_error(LLAPI_MSG_ERROR, errno,
                            "Cannot create volatile file %s in %s\n",