mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 03:09:34 +03:00
Illumos 4638 - Panic in ZFS via rfs3_setattr()/rfs3_write(): dirtying snapshot!
4638 Panic in ZFS via rfs3_setattr()/rfs3_write(): dirtying snapshot! Reviewed by: Alek Pinchuk <alek.pinchuk@nexenta.com> Reviewed by: Ilya Usvyatsky <ilya.usvyatsky@nexenta.com> Reviewed by: Dan McDonald <danmcd@omniti.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> Reviewed by: Garrett D'Amore <garrett@damore.org> Approved by: Garrett D'Amore <garrett@damore.org> References: https://www.illumos.org/issues/4638 https://github.com/illumos/illumos-gate/commit/2144b12 Porting notes: - [module/zfs/zfs_vnops.c] -3558fd7
Prototype/structure update for Linux -2cf7f52
Linux compat 2.6.39: mount_nodev() - Use zfs_is_readonly() wrapper - Remove first line of comment which doesn't apply Ported-by: kernelOfTruth kerneloftruth@gmail.com Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
This commit is contained in:
parent
53e0313506
commit
f3c9dca093
@ -21,6 +21,7 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013 by Delphix. All rights reserved.
|
||||
* Copyright 2014 Nexenta Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2015 by Chunwei Chen. All rights reserved.
|
||||
*/
|
||||
|
||||
@ -621,6 +622,15 @@ zfs_write(struct inode *ip, uio_t *uio, int ioflag, cred_t *cr)
|
||||
SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_FLAGS(zsb), NULL,
|
||||
&zp->z_pflags, 8);
|
||||
|
||||
/*
|
||||
* Callers might not be able to detect properly that we are read-only,
|
||||
* so check it explicitly here.
|
||||
*/
|
||||
if (zfs_is_readonly(zsb)) {
|
||||
ZFS_EXIT(zsb);
|
||||
return (SET_ERROR(EROFS));
|
||||
}
|
||||
|
||||
/*
|
||||
* If immutable or not appending then return EPERM
|
||||
*/
|
||||
@ -4378,6 +4388,15 @@ zfs_space(struct inode *ip, int cmd, flock64_t *bfp, int flag,
|
||||
return (SET_ERROR(EINVAL));
|
||||
}
|
||||
|
||||
/*
|
||||
* Callers might not be able to detect properly that we are read-only,
|
||||
* so check it explicitly here.
|
||||
*/
|
||||
if (zfs_is_readonly(zsb)) {
|
||||
ZFS_EXIT(zsb);
|
||||
return (SET_ERROR(EROFS));
|
||||
}
|
||||
|
||||
if ((error = convoff(ip, bfp, 0, offset))) {
|
||||
ZFS_EXIT(zsb);
|
||||
return (error);
|
||||
|
Loading…
Reference in New Issue
Block a user