)]}'
{
  "commit": "124c2de2c0aee96271e4ddab190083d8aa7aa71a",
  "tree": "d1a403e1678a257f16eab8de5bb4f30648ec96d4",
  "parents": [
    "d78a0dcf64cb94ffdd5253722caed3f044a92a78"
  ],
  "author": {
    "name": "Amir Goldstein",
    "email": "amir73il@gmail.com",
    "time": "Wed Jun 17 09:57:11 2020 +0300"
  },
  "committer": {
    "name": "Miklos Szeredi",
    "email": "mszeredi@redhat.com",
    "time": "Thu Jul 16 00:09:17 2020 +0200"
  },
  "message": "ovl: relax WARN_ON() when decoding lower directory file handle\n\nDecoding a lower directory file handle to overlay path with cold\ninode/dentry cache may go as follows:\n\n1. Decode real lower file handle to lower dir path\n2. Check if lower dir is indexed (was copied up)\n3. If indexed, get the upper dir path from index\n4. Lookup upper dir path in overlay\n5. If overlay path found, verify that overlay lower is the lower dir\n   from step 1\n\nOn failure to verify step 5 above, user will get an ESTALE error and a\nWARN_ON will be printed.\n\nA mismatch in step 5 could be a result of lower directory that was renamed\nwhile overlay was offline, after that lower directory has been copied up\nand indexed.\n\nThis is a scripted reproducer based on xfstest overlay/052:\n\n  # Create lower subdir\n  create_dirs\n  create_test_files $lower/lowertestdir/subdir\n  mount_dirs\n  # Copy up lower dir and encode lower subdir file handle\n  touch $SCRATCH_MNT/lowertestdir\n  test_file_handles $SCRATCH_MNT/lowertestdir/subdir -p -o $tmp.fhandle\n  # Rename lower dir offline\n  unmount_dirs\n  mv $lower/lowertestdir $lower/lowertestdir.new/\n  mount_dirs\n  # Attempt to decode lower subdir file handle\n  test_file_handles $SCRATCH_MNT -p -i $tmp.fhandle\n\nSince this WARN_ON() can be triggered by user we need to relax it.\n\nFixes: 4b91c30a5a19 (\"ovl: lookup connected ancestor of dir in inode cache\")\nCc: \u003cstable@vger.kernel.org\u003e # v4.16+\nSigned-off-by: Amir Goldstein \u003camir73il@gmail.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8f4286450f92a5fc0cf2664fdd11ce9bbf47ab43",
      "old_mode": 33188,
      "old_path": "fs/overlayfs/export.c",
      "new_id": "0e696f72cf651ac6023a5e1356f7ae39ab0a7ea1",
      "new_mode": 33188,
      "new_path": "fs/overlayfs/export.c"
    }
  ]
}
