quilt-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Quilt-dev] [PATCH 26/39] backup-files: Quick exit when unlinking is not


From: Jean Delvare
Subject: [Quilt-dev] [PATCH 26/39] backup-files: Quick exit when unlinking is not needed
Date: Sat, 19 Mar 2011 10:52:56 +0100
User-agent: quilt/0.48-17.1

The "check for hard links" use case is almost always a no-op. Check
if any work is needed at all first, and only if this is the case,
walk the list of files and unlink the faulty files. This approach
results in a huge performance gain in the most common case, and a
very small performance loss in the uncommon case.

Signed-off-by: Jean Delvare <address@hidden>
Reviewed-by: Raphael Hertzog <address@hidden>
---
 quilt/scripts/backup-files.in |   14 ++++++++++++++
 1 file changed, 14 insertions(+)

--- a/quilt/scripts/backup-files.in
+++ b/quilt/scripts/backup-files.in
@@ -187,6 +187,13 @@ noop_nolinks()
        fi
 }
 
+# Test if some backed up files have a link count greater than 1
+some_files_have_links()
+{
+       (cd "$OPT_PREFIX" && find . -type f -print0) \
+       | xargs -0 stat @STAT_HARDLINK@ 2> /dev/null | grep -qv '^1$'
+}
+
 
 ECHO=echo
 while [ $# -gt 0 ]; do
@@ -258,6 +265,13 @@ if [ "$1" = - ]; then
                exit
        fi
 
+       # We typically expect the link count of backed up files to be 1
+       # already, so check quickly that this is the case, and only if not,
+       # take the slow path and walk the file list in search of files to fix.
+       if [ "$OPT_WHAT" = noop_nolinks ] && ! some_files_have_links; then
+               exit
+       fi
+
        find "$OPT_PREFIX" -type f -print \
        | while read
        do




reply via email to

[Prev in Thread] Current Thread [Next in Thread]