diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py
index 363e808de3496653d93690718149329467d2f078_aGdleHQvbGFyZ2VmaWxlcy9vdmVycmlkZXMucHk=..12dabc22de77cabe32f932b5fe093ab6bac21f18_aGdleHQvbGFyZ2VmaWxlcy9vdmVycmlkZXMucHk= 100644
--- a/hgext/largefiles/overrides.py
+++ b/hgext/largefiles/overrides.py
@@ -202,6 +202,13 @@
     restorematchfn()
     removelargefiles(ui, repo, *pats, **opts)
 
+def overridestatusfn(orig, repo, rev2, **opts):
+    try:
+        repo._repo.lfstatus = True
+        return orig(repo, rev2, **opts)
+    finally:
+        repo._repo.lfstatus = False
+
 def overridestatus(orig, ui, repo, *pats, **opts):
     try:
         repo.lfstatus = True
diff --git a/hgext/largefiles/uisetup.py b/hgext/largefiles/uisetup.py
index 363e808de3496653d93690718149329467d2f078_aGdleHQvbGFyZ2VmaWxlcy91aXNldHVwLnB5..12dabc22de77cabe32f932b5fe093ab6bac21f18_aGdleHQvbGFyZ2VmaWxlcy91aXNldHVwLnB5 100644
--- a/hgext/largefiles/uisetup.py
+++ b/hgext/largefiles/uisetup.py
@@ -12,6 +12,7 @@
     httprepo, localrepo, merge, sshrepo, sshserver, wireproto
 from mercurial.i18n import _
 from mercurial.hgweb import hgweb_mod, protocol, webcommands
+from mercurial.subrepo import hgsubrepo
 
 import overrides
 import proto
@@ -35,5 +36,7 @@
                                    overrides.overrideremove)
     entry = extensions.wrapcommand(commands.table, 'forget',
                                    overrides.overrideforget)
+
+    # Subrepos call status function
     entry = extensions.wrapcommand(commands.table, 'status',
                                    overrides.overridestatus)
@@ -38,5 +41,8 @@
     entry = extensions.wrapcommand(commands.table, 'status',
                                    overrides.overridestatus)
+    entry = extensions.wrapfunction(hgsubrepo, 'status',
+                                    overrides.overridestatusfn)
+
     entry = extensions.wrapcommand(commands.table, 'log',
                                    overrides.overridelog)
     entry = extensions.wrapcommand(commands.table, 'rollback',
diff --git a/tests/test-largefiles.t b/tests/test-largefiles.t
index 363e808de3496653d93690718149329467d2f078_dGVzdHMvdGVzdC1sYXJnZWZpbGVzLnQ=..12dabc22de77cabe32f932b5fe093ab6bac21f18_dGVzdHMvdGVzdC1sYXJnZWZpbGVzLnQ= 100644
--- a/tests/test-largefiles.t
+++ b/tests/test-largefiles.t
@@ -1050,5 +1050,29 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     add files
   
-
+verify that large files in subrepos handled properly
+  $ hg init subrepo
+  $ echo "subrepo = subrepo" > .hgsub
+  $ hg add .hgsub
+  $ hg ci -m "add subrepo"
+  Invoking status precommit hook
+  A .hgsub
+  ? .hgsubstate
+  $ echo "rev 1" > subrepo/large.txt
+  $ hg -R subrepo add --large subrepo/large.txt
+  $ hg st
+  $ hg st -S
+  A subrepo/large.txt
+# This is a workaround for not noticing the subrepo is dirty
+  $ hg -R subrepo ci -m "commit large file"
+  Invoking status precommit hook
+  A large.txt
+  $ hg ci -S -m "commit top repo"
+  Invoking status precommit hook
+  M .hgsubstate
+  $ hg st -S
+  $ echo "rev 2" > subrepo/large.txt
+  $ hg st -S
+  M subrepo/large.txt
+ 
   $ cd ..