-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
No need to check bio_alloc(GFP_NOIO, ) returns. #2703
Comments
Actually the WRITE_FLUSH_FUA had been submitted and vdev_disk_io_start had returned, so txg_sync was likely stuck waiting for WRITE_FLUSH_FUA to complete. But it's relevant here. |
@thegreatgazoo GFP_NOIO must be used in bio_alloc() otherwise bio_alloc() could enter the direct reclaim call path when memory is low. Since Do you have a full stack trace for where the
|
Mark the error handling branch as unlikely() because the current kernel interface can never return NULL. However, we want to keep the error handling in case this behavior changes in the futre. Plus fix a small style issue. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Isaac Huang <he.huang@intel.com> Closes openzfs#2703
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time diverged code base from Illumos: fc5bb51 Fix stack dbuf_hold_impl() 34229a2 Reduce stack usage for recursive traverse_visitbp() 0f37d0c Linux 3.11 compat: fops->iterate() [module/zfs/zfs_vnops.c] module/zfs/dmu.c (c90 vs. c99) 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c]
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time depends on openzfs#3611 Illumos 5746 more checksumming in zfs send diverged code base from Illumos: fc5bb51 Fix stack dbuf_hold_impl() 34229a2 Reduce stack usage for recursive traverse_visitbp() 0f37d0c Linux 3.11 compat: fops->iterate() [module/zfs/zfs_vnops.c] module/zfs/dmu.c (c90 vs. c99) 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c]
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time depends on openzfs#3611 Illumos 5746 more checksumming in zfs send diverged code base from Illumos: fc5bb51 Fix stack dbuf_hold_impl() 34229a2 Reduce stack usage for recursive traverse_visitbp() 0f37d0c Linux 3.11 compat: fops->iterate() [module/zfs/zfs_vnops.c] module/zfs/dmu.c (c90 vs. c99) 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c]
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time depends on openzfs#3611 Illumos 5746 more checksumming in zfs send diverged code base from Illumos: fc5bb51 Fix stack dbuf_hold_impl() 34229a2 Reduce stack usage for recursive traverse_visitbp() 0f37d0c Linux 3.11 compat: fops->iterate() [module/zfs/zfs_vnops.c] module/zfs/dmu.c (c90 vs. c99) 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c] Ported-by: kernelOfTruth kerneloftruth@gmail.com
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time depends on openzfs#3611 Illumos 5746 more checksumming in zfs send diverged code base from Illumos: fc5bb51 Fix stack dbuf_hold_impl() 34229a2 Reduce stack usage for recursive traverse_visitbp() 0f37d0c Linux 3.11 compat: fops->iterate() [module/zfs/zfs_vnops.c] module/zfs/dmu.c (c90 vs. c99) 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c] Ported-by: kernelOfTruth kerneloftruth@gmail.com
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time depends on openzfs#3611 Illumos 5746 more checksumming in zfs send diverged code base from Illumos: [lib/libzfs/libzfs_sendrecv.c] b8864a2 Fix gcc cast warnings 325f023 Add linux kernel device support 5c3f61e Increase Linux pipe buffer size on 'zfs receive' fc5bb51 Fix stack dbuf_hold_impl() 34229a2 Reduce stack usage for recursive traverse_visitbp() 0f37d0c Linux 3.11 compat: fops->iterate() [module/zfs/zfs_vnops.c] module/zfs/dmu.c (c90 vs. c99) 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c] Ported-by: kernelOfTruth kerneloftruth@gmail.com
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time depends on openzfs#3611 Illumos 5746 more checksumming in zfs send diverged code base from Illumos: [lib/libzfs/libzfs_sendrecv.c] b8864a2 Fix gcc cast warnings 325f023 Add linux kernel device support 5c3f61e Increase Linux pipe buffer size on 'zfs receive' [module/zfs/zfs_vnops.c] 3558fd7 Prototype/structure update for Linux c12e3a5 Restructure zfs_readdir() to fix regressions fc5bb51 Fix stack dbuf_hold_impl() 34229a2 Reduce stack usage for recursive traverse_visitbp() module/zfs/dmu.c (c90 vs. c99) 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c] Ported-by: kernelOfTruth kerneloftruth@gmail.com
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time depends on openzfs#3611 Illumos 5746 more checksumming in zfs send diverged code base from Illumos: [lib/libzfs/libzfs_sendrecv.c] b8864a2 Fix gcc cast warnings 325f023 Add linux kernel device support 5c3f61e Increase Linux pipe buffer size on 'zfs receive' [module/zfs/zfs_vnops.c] 3558fd7 Prototype/structure update for Linux c12e3a5 Restructure zfs_readdir() to fix regressions [module/zfs/zvol.c] function @zvol_map_block(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, is non-existent in ZoL [module/zfs/dmu.c] in function dmu_prefetch(objset_t *os, uint64_t object, uint64_t offset, uint64_t len) int i is initialized before the following code block (c90 vs. c99) fc5bb51 Fix stack dbuf_hold_impl() 34229a2 Reduce stack usage for recursive traverse_visitbp() 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c] Ported-by: kernelOfTruth kerneloftruth@gmail.com
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time depends on openzfs#3611 Illumos 5746 more checksumming in zfs send diverged code base from Illumos: [lib/libzfs/libzfs_sendrecv.c] b8864a2 Fix gcc cast warnings 325f023 Add linux kernel device support 5c3f61e Increase Linux pipe buffer size on 'zfs receive' [module/zfs/zfs_vnops.c] 3558fd7 Prototype/structure update for Linux c12e3a5 Restructure zfs_readdir() to fix regressions [module/zfs/zvol.c] function @zvol_map_block(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, is non-existent in ZoL [module/zfs/dmu.c] in function dmu_prefetch(objset_t *os, uint64_t object, uint64_t offset, uint64_t len) int i is initialized before the following code block (c90 vs. c99) fc5bb51 Fix stack dbuf_hold_impl() 34229a2 Reduce stack usage for recursive traverse_visitbp() 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c] Ported-by: kernelOfTruth kerneloftruth@gmail.com
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time depends on openzfs#3611 Illumos 5746 more checksumming in zfs send diverged code base from Illumos: [lib/libzfs/libzfs_sendrecv.c] b8864a2 Fix gcc cast warnings 325f023 Add linux kernel device support 5c3f61e Increase Linux pipe buffer size on 'zfs receive' [module/zfs/zfs_vnops.c] 3558fd7 Prototype/structure update for Linux c12e3a5 Restructure zfs_readdir() to fix regressions [module/zfs/zvol.c] function @zvol_map_block(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, is non-existent in ZoL [module/zfs/dmu.c] in function dmu_prefetch(objset_t *os, uint64_t object, uint64_t offset, uint64_t len) int i is initialized before the following code block (c90 vs. c99) [module/zfs/Makefile.in + lib/libzpool/Makefile.am] 47a4a6f Support parallel build trees (VPATH builds) fc5bb51 Fix stack dbuf_hold_impl() 34229a2 Reduce stack usage for recursive traverse_visitbp() 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c] Ported-by: kernelOfTruth kerneloftruth@gmail.com
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time depends on openzfs#3611 Illumos 5746 more checksumming in zfs send diverged code base from Illumos: [lib/libzfs/libzfs_sendrecv.c] b8864a2 Fix gcc cast warnings 325f023 Add linux kernel device support 5c3f61e Increase Linux pipe buffer size on 'zfs receive' [module/zfs/zfs_vnops.c] 3558fd7 Prototype/structure update for Linux c12e3a5 Restructure zfs_readdir() to fix regressions [module/zfs/zvol.c] function @zvol_map_block(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, is non-existent in ZoL [module/zfs/dmu.c] in function dmu_prefetch(objset_t *os, uint64_t object, uint64_t offset, uint64_t len) int i is initialized before the following code block (c90 vs. c99) [module/zfs/Makefile.in + lib/libzpool/Makefile.am] 47a4a6f Support parallel build trees (VPATH builds) [module/zfs/dbuf.c] fc5bb51 Fix stack dbuf_hold_impl() 9b67f60 Illumos 4757, 4913 {4757 ZFS embedded-data block pointers ("zero block compression") , 4913 zfs release should not be subject to space checks} {reference} 34229a2 Reduce stack usage for recursive traverse_visitbp() 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c] Ported-by: kernelOfTruth kerneloftruth@gmail.com
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time depends on openzfs#3611 Illumos 5746 more checksumming in zfs send diverged code base from Illumos: [lib/libzfs/libzfs_sendrecv.c] b8864a2 Fix gcc cast warnings 325f023 Add linux kernel device support 5c3f61e Increase Linux pipe buffer size on 'zfs receive' [module/zfs/zfs_vnops.c] 3558fd7 Prototype/structure update for Linux c12e3a5 Restructure zfs_readdir() to fix regressions [module/zfs/zvol.c] function @zvol_map_block(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, is non-existent in ZoL [module/zfs/dmu.c] in function dmu_prefetch(objset_t *os, uint64_t object, uint64_t offset, uint64_t len) int i is initialized before the following code block (c90 vs. c99) [module/zfs/Makefile.in + lib/libzpool/Makefile.am] 47a4a6f Support parallel build trees (VPATH builds) [module/zfs/dbuf.c] fc5bb51 Fix stack dbuf_hold_impl() 9b67f60 Illumos 4757, 4913 {4757 ZFS embedded-data block pointers ("zero block compression") , 4913 zfs release should not be subject to space checks} {reference} 34229a2 Reduce stack usage for recursive traverse_visitbp() [module/zfs/dmu_send.c] b58986e Use large stacks when available 241b541 Illumos 5959 - clean up per-dataset feature count code 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c] Ported-by: kernelOfTruth kerneloftruth@gmail.com
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time depends on openzfs#3611 Illumos 5746 more checksumming in zfs send diverged code base from Illumos: [lib/libzfs/libzfs_sendrecv.c] b8864a2 Fix gcc cast warnings 325f023 Add linux kernel device support 5c3f61e Increase Linux pipe buffer size on 'zfs receive' [module/zfs/zfs_vnops.c] 3558fd7 Prototype/structure update for Linux c12e3a5 Restructure zfs_readdir() to fix regressions [module/zfs/zvol.c] function @zvol_map_block(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, is non-existent in ZoL [module/zfs/dmu.c] in function dmu_prefetch(objset_t *os, uint64_t object, uint64_t offset, uint64_t len) int i is initialized before the following code block (c90 vs. c99) [module/zfs/Makefile.in + lib/libzpool/Makefile.am] 47a4a6f Support parallel build trees (VPATH builds) [module/zfs/dbuf.c] fc5bb51 Fix stack dbuf_hold_impl() 9b67f60 Illumos 4757, 4913 {4757 ZFS embedded-data block pointers ("zero block compression") , 4913 zfs release should not be subject to space checks} {reference} 34229a2 Reduce stack usage for recursive traverse_visitbp() [module/zfs/dmu_send.c] b58986e Use large stacks when available 241b541 Illumos 5959 - clean up per-dataset feature count code WIP @restore_read_payload_and_next_header(struct restorearg *ra, int len, void *buf) 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c] Ported-by: kernelOfTruth kerneloftruth@gmail.com
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time depends on openzfs#3611 Illumos 5746 more checksumming in zfs send diverged code base from Illumos: [lib/libzfs/libzfs_sendrecv.c] b8864a2 Fix gcc cast warnings 325f023 Add linux kernel device support 5c3f61e Increase Linux pipe buffer size on 'zfs receive' [module/zfs/zfs_vnops.c] 3558fd7 Prototype/structure update for Linux c12e3a5 Restructure zfs_readdir() to fix regressions [module/zfs/zvol.c] function @zvol_map_block(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, is non-existent in ZoL [module/zfs/dmu.c] in function dmu_prefetch(objset_t *os, uint64_t object, uint64_t offset, uint64_t len) int i is initialized before the following code block (c90 vs. c99) [module/zfs/Makefile.in + lib/libzpool/Makefile.am] 47a4a6f Support parallel build trees (VPATH builds) [module/zfs/dbuf.c] fc5bb51 Fix stack dbuf_hold_impl() 9b67f60 Illumos 4757, 4913 {4757 ZFS embedded-data block pointers ("zero block compression") , 4913 zfs release should not be subject to space checks} {reference} 34229a2 Reduce stack usage for recursive traverse_visitbp() [module/zfs/dmu_send.c] b58986e Use large stacks when available 241b541 Illumos 5959 - clean up per-dataset feature count code [module/zfs/dmu_send.c, C90 warnings - somewhat less clear to read] Illumos 5746 more checksumming in zfs send WIP dmu_recv_stream(dmu_recv_cookie_t *drc, vnode_t *vp, offset_t *voffp, 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c] Ported-by: kernelOfTruth kerneloftruth@gmail.com
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time depends on openzfs#3611 Illumos 5746 more checksumming in zfs send diverged code base from Illumos: [lib/libzfs/libzfs_sendrecv.c] b8864a2 Fix gcc cast warnings 325f023 Add linux kernel device support 5c3f61e Increase Linux pipe buffer size on 'zfs receive' [module/zfs/zfs_vnops.c] 3558fd7 Prototype/structure update for Linux c12e3a5 Restructure zfs_readdir() to fix regressions [module/zfs/zvol.c] function @zvol_map_block(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, is non-existent in ZoL [module/zfs/dmu.c] in function dmu_prefetch(objset_t *os, uint64_t object, uint64_t offset, uint64_t len) int i is initialized before the following code block (c90 vs. c99) [module/zfs/Makefile.in + lib/libzpool/Makefile.am] 47a4a6f Support parallel build trees (VPATH builds) [module/zfs/dbuf.c] fc5bb51 Fix stack dbuf_hold_impl() 9b67f60 Illumos 4757, 4913 {4757 ZFS embedded-data block pointers ("zero block compression") , 4913 zfs release should not be subject to space checks} {reference} 34229a2 Reduce stack usage for recursive traverse_visitbp() [module/zfs/dmu_send.c] b58986e Use large stacks when available 241b541 Illumos 5959 - clean up per-dataset feature count code {reference} 77aef6f Use vmem_alloc() for nvlists 00b4602 Add linux kernel memory support [module/zfs/dmu_send.c, C90 warnings - somewhat less clear to read] Illumos 5746 more checksumming in zfs send WIP dmu_recv_stream(dmu_recv_cookie_t *drc, vnode_t *vp, offset_t *voffp, 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c] Ported-by: kernelOfTruth kerneloftruth@gmail.com
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time depends on openzfs#3611 Illumos 5746 more checksumming in zfs send diverged code base from Illumos: [lib/libzfs/libzfs_sendrecv.c] b8864a2 Fix gcc cast warnings 325f023 Add linux kernel device support 5c3f61e Increase Linux pipe buffer size on 'zfs receive' [module/zfs/zfs_vnops.c] 3558fd7 Prototype/structure update for Linux c12e3a5 Restructure zfs_readdir() to fix regressions [module/zfs/zvol.c] function @zvol_map_block(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, is non-existent in ZoL [module/zfs/dmu.c] in function dmu_prefetch(objset_t *os, uint64_t object, uint64_t offset, uint64_t len) int i is initialized before the following code block (c90 vs. c99) [module/zfs/Makefile.in + lib/libzpool/Makefile.am] 47a4a6f Support parallel build trees (VPATH builds) [module/zfs/dbuf.c] fc5bb51 Fix stack dbuf_hold_impl() 9b67f60 Illumos 4757, 4913 {4757 ZFS embedded-data block pointers ("zero block compression") , 4913 zfs release should not be subject to space checks} {reference} 34229a2 Reduce stack usage for recursive traverse_visitbp() [module/zfs/dmu_send.c] b58986e Use large stacks when available 241b541 Illumos 5959 - clean up per-dataset feature count code {reference} 77aef6f Use vmem_alloc() for nvlists 00b4602 Add linux kernel memory support [module/zfs/dmu_send.c, C90 warnings - somewhat less clear to read] Illumos 5746 more checksumming in zfs send WIP @dbuf_prefetch(dnode_t *dn, uint64_t blkid, zio_priority_t prio) - if (dbuf_findbp(dn, 0, blkid, TRUE, &db, &bp) == 0) { 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c] Ported-by: kernelOfTruth kerneloftruth@gmail.com
5960 zfs recv should prefetch indirect blocks 5925 zfs receive -o origin= Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> depends on openzfs#3574 Illumos 5745 zfs set allows only one dataset property to be set at a time depends on openzfs#3611 Illumos 5746 more checksumming in zfs send diverged code base from Illumos: [lib/libzfs/libzfs_sendrecv.c] b8864a2 Fix gcc cast warnings 325f023 Add linux kernel device support 5c3f61e Increase Linux pipe buffer size on 'zfs receive' [module/zfs/zfs_vnops.c] 3558fd7 Prototype/structure update for Linux c12e3a5 Restructure zfs_readdir() to fix regressions [module/zfs/zvol.c] function @zvol_map_block(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, is non-existent in ZoL [module/zfs/dmu.c] in function dmu_prefetch(objset_t *os, uint64_t object, uint64_t offset, uint64_t len) int i is initialized before the following code block (c90 vs. c99) [module/zfs/Makefile.in + lib/libzpool/Makefile.am] 47a4a6f Support parallel build trees (VPATH builds) [module/zfs/dbuf.c] fc5bb51 Fix stack dbuf_hold_impl() 9b67f60 Illumos 4757, 4913 {4757 ZFS embedded-data block pointers ("zero block compression") , 4913 zfs release should not be subject to space checks} {reference} 34229a2 Reduce stack usage for recursive traverse_visitbp() [module/zfs/dmu_send.c] b58986e Use large stacks when available 241b541 Illumos 5959 - clean up per-dataset feature count code {reference} 77aef6f Use vmem_alloc() for nvlists 00b4602 Add linux kernel memory support [module/zfs/dmu_send.c, C90 warnings - somewhat less clear to read] Illumos 5746 more checksumming in zfs send WIP @dbuf_prefetch(dnode_t *dn, uint64_t blkid, zio_priority_t prio) - if (dbuf_findbp(dn, 0, blkid, TRUE, &db, &bp) == 0) { 37abac6 Illumos openzfs#2703: add mechanism to report ZFS send progress [module/zfs/dmu_send.c] Ported-by: kernelOfTruth kerneloftruth@gmail.com
It looks like bio_alloc(GFP_NOIO, ) will never return NULL:
https://lkml.org/lkml/2009/4/14/499
So there's no need for the error handling code in module/zfs/vdev_disk.c for NULL returns from bio_alloc(GFP_NOIO, ). Some assertions should suffice.
But it made me wonder whether GFP_NOIO is the right flag. I saw that GFP_NOIO was used due to a deadlock when a zvol is used for swap. It made sense. But on a system where ZFS is running, the ARC is most likely the best place to reclaim memory. With GFP_NOIO, would the arc_shrinker be called upon to free up memory? My understanding is that the ARC can free up cold buffers without doing any IO.
I'm interested because I'm troubleshooting a Lustre IO timeout where I saw:
Likely it's really stuck in vdev_disk_io_flush() which is probably inlined. It seemed like the syncing txg is about to complete and a WRITE_FLUSH_FUA is to be issued after the uberblocks have been updated. There's also other threads waiting for the txg to be synced.
The only place it could get stuck in vdev_disk_io_flush() seemed to be in bio_alloc(), which indicated a deadlock under memory pressure.
The z_ioctl_iss thread got stuck there for more than a minute, which indicated that no memory was freed up during the wait.
The text was updated successfully, but these errors were encountered: