u64 data_version, size;
        u32 type, abort_code;
        u8 flags = 0;
 -      int ret;
 -
 -      if (vnode)
 -              write_seqlock(&vnode->cb_lock);
  
+       abort_code = ntohl(xdr->abort_code);
+ 
        if (xdr->if_version != htonl(AFS_FSTATUS_VERSION)) {
 -                      ret = 0;
 -                      goto out;
+               if (xdr->if_version == htonl(0) &&
+                   abort_code != 0 &&
+                   inline_error) {
+                       /* The OpenAFS fileserver has a bug in FS.InlineBulkStatus
+                        * whereby it doesn't set the interface version in the error
+                        * case.
+                        */
+                       status->abort_code = abort_code;
++                      return 0;
+               }
+ 
                pr_warn("Unknown AFSFetchStatus version %u\n", ntohl(xdr->if_version));
                goto bad;
        }
  
 -              ret = 0;
 -              goto out;
+       if (abort_code != 0 && inline_error) {
+               status->abort_code = abort_code;
++              return 0;
+       }
+ 
        type = ntohl(xdr->type);
-       abort_code = ntohl(xdr->abort_code);
        switch (type) {
        case AFS_FTYPE_FILE:
        case AFS_FTYPE_DIR: