Changeset e4fa3ad in rtems for cpukit

Timestamp:
02/01/16 14:04:46 (8 years ago)
Author:
David Woodhouse <David.Woodhouse@…>
Branches:
5, master
Children:
0f5030d
Parents:
1e6d56e
git-author:
David Woodhouse <David.Woodhouse@…> (02/01/16 14:04:46)
git-committer:
Sebastian Huber <sebastian.huber@…> (07/16/18 05:22:13)
Message:

Fix directory hardlinks from deleted directories

When a directory is deleted, we don't take too much care about killing off
all the dirents that belong to it — on the basis that on remount, the scan
will conclude that the directory is dead anyway.

This doesn't work though, when the deleted directory contained a child
directory which was moved *out*. In the early stages of the fs build
we can then end up with an apparent hard link, with the child directory
appearing both in its true location, and as a child of the original
directory which are this stage of the mount process we don't *yet* know
is defunct.

To resolve this, take out the early special-casing of the "directories
shall not have hard links" rule in jffs2_build_inode_pass1(), and let the
normal nlink processing happen for directories as well as other inodes.

Then later in the build process we can set ic->pino_nlink to the parent
inode#, as is required for directories during normal operaton, instead
of the nlink. And complain only *then* about hard links which are still
in evidence even after killing off all the unreachable paths.

Reported-by: Liu Song <liu.song11@…>
Signed-off-by: David Woodhouse <David.Woodhouse@…>
Cc: stable@…

(No files)

Note: See TracChangeset for help on using the changeset viewer.