On Fri, Apr 7, 2017 at 7:16 PM, Amir Goldstein <amir73il@xxxxxxxxx> wrote: > On Fri, Apr 7, 2017 at 4:21 PM, Miklos Szeredi <miklos@xxxxxxxxxx> wrote: >> On Fri, Apr 7, 2017 at 11:01 AM, Amir Goldstein <amir73il@xxxxxxxxx> wrote: >>> truncate an overlayfs inode was checking IS_APPEND() on >>> overlay inode, but overlay inode does not have the S_APPEND flag. >>> >>> Move the IS_APPEND() check to after we have the upperdentry >>> and pass it the real upper inode. >> >> Not sure the reordering is worth it. Just use d_real_inode() in the > > Hmm, I meant move after d_real() which actually does a copy up. > If we use d_real_inode() before d_real() then we prevent truncate > of a lower with chattr +a. > That is not consistent at all with open(O_TRUNC) and ftruncate > and with checks for IS_IMMUTABLE() which only test upper > (and I think it is better this way). > >> IS_APPEND() check. OTOH it shouldn't matter (well, except whether the >> file is copied up or not in the error caae ). But mainly I just feel >> when there's a choice of a simpler way we should use that. >> >> Also it's usually better not to mix fixes with cleanups (the d_inode() thing). >> > > Sure, I can split that or drop the cleanup altogether. > Or drop the patch altogether... d_real() already takes care of IS_APPEND() now :)