Whamcloud - gitweb
LU-1842 quota: migrate old quota admin files
[fs/lustre-release.git] / lustre / osd-ldiskfs / osd_quota_fmt.c
index 25db1ce..45f3e08 100644 (file)
@@ -64,6 +64,29 @@ static ssize_t quota_read_blk(const struct lu_env *env,
        ENTRY;
 
        memset(buf, 0, LUSTRE_DQBLKSIZE);
+
+#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2,7,50,0)
+       /* type is set as -1 when reading old admin quota file */
+       if (type != USRQUOTA && type != GRPQUOTA) {
+               struct lu_buf   lu_buffer;
+               loff_t          pos;
+
+               lu_buffer.lb_buf = buf;
+               lu_buffer.lb_len = LUSTRE_DQBLKSIZE;
+               pos = blk << LUSTRE_DQBLKSIZE_BITS;
+
+               ret = dt_record_read(env, &obj->oo_dt, &lu_buffer, &pos);
+
+               if (ret == 0)
+                       ret = LUSTRE_DQBLKSIZE;
+               else if (ret == -EBADR || ret == -EFAULT)
+                       ret = 0;
+               RETURN(ret);
+       }
+#else
+#warning "remove old quota compatibility code"
+#endif
+
        ret = sb->s_op->quota_read(sb, type, buf, LUSTRE_DQBLKSIZE,
                                   blk << LUSTRE_DQBLKSIZE_BITS);