On Wed 01-07-15 07:13:55, Theodore Ts'o wrote: [...] > Perhaps we need to make the documentation a bit more explicit? > All which is stated in include/slab.h: > > * %GFP_NOIO - Do not do any I/O at all while trying to get memory. > * > * %GFP_NOFS - Do not make any fs calls while trying to get memory. > > I thought this was obvious, but these flags are used by code which in > the I/O or FS paths, and so it's always possible that they are trying > to write back the page which you decide to blocking on when trying to > do the memory allocation, at which point, *boom*, deadlock. > > So it's just not "do not make any FS or I/O calls", but also "the mm > layer must not not wait for any FS or I/O operations from completing, > since the operation you block on might be the one they were in the > middle of trying to complete --- or they may be holding a lock at the > time when they were trying to do a memory allocation which blocks the > I/O or FS operation from completing". Sure any refinement here would be more than welcome. -- Michal Hocko SUSE Labs -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html