19 years agomodernize-bozo-20020821
Derrick Brashear [Wed, 21 Aug 2002 19:58:18 +0000]

convert to protoized declarations in the bosserver
deal with InitBnode malloc failures

19 years agopull-prototypes-to-head-20020821
Nathan Neulinger [Wed, 21 Aug 2002 19:52:17 +0000]

pull up prototypes to head

19 years agobos-fix-restart-usage-message-20020821 openafs-devel_1_3_3
Derrick Brashear [Wed, 21 Aug 2002 16:43:29 +0000]

as suggested by Turbo Fredriksson

restart does not default to all

19 years agorealcellindex-fix-allocation-20020821
Derrick Brashear [Wed, 21 Aug 2002 06:52:18 +0000]

fix comparison and the double allocation it uncovers

19 years agoAllow users with admin bits to store different user/group IDs
Nickolai Zeldovich [Tue, 20 Aug 2002 22:39:31 +0000]
Allow users with admin bits to store different user/group IDs
along with a StoreData call; they can already do so anyway by
using StoreStatus.  Fixes a spurious permission denied error
with arla clients.

19 years agolinux-dcache-flushing-experimental-20020819
Chas Williams [Mon, 19 Aug 2002 23:06:02 +0000]
linux-dcache-flushing-experimental-20020819 at least partly to blame.

hold the dcache lock only briefly; instead put dcache entries to be junked
onto a free list, by unhashing them, then grab the dcache lock, junk them,
and release it.

19 years agolinux-dentry-revalidate-lock-kernel-20020813
Chas Williams [Mon, 19 Aug 2002 22:52:52 +0000]

avoid potential race for shrink_dcache_parent/d_drop

smbfs and nfs do equivalent.

This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.

avoid potential race for shrink_dcache_parent/d_drop

smbfs and nfs do equivalent.

slight rework to avoid holding glock in a way which could deadlock us

19 years agoDon't return ELOOP when crossing a mountpoint boundary from a BK volume to
Garry Zacheiss [Mon, 19 Aug 2002 19:53:34 +0000]
Don't return ELOOP when crossing a mountpoint boundary from a BK volume to
a BK volume.  find treats it as a fatal error, and it's annoying not to be
able to naively use find to recurse through a volume with its backup volume
mounted.  Never noticed this before because we used to ignore this return
value.  Return ENODEV instead.

20 years agoAn unintentional change accidentally leaked out when the
Love Hörnquist-Åstrand [Sat, 17 Aug 2002 17:19:18 +0000]
An unintentional change accidentally leaked out when the
rx-avoid-using-newproc-on-solaris-20020812 delta was checked
in.  Undo it, since it breaks things.

20 years agocompiler-autoconf-tests-20020815
Harald Barth [Thu, 15 Aug 2002 22:10:23 +0000]

attempt to find compilers we like

20 years agopioctl-write-null-before-copyout-20020814
Derrick Brashear [Wed, 14 Aug 2002 22:18:34 +0000]

suggested by

20 years agosolaris8-param-cleanup-nested-comments-20020813
Nathan Neulinger [Wed, 14 Aug 2002 02:24:59 +0000]

get rid of nested comment

20 years agokdump-sh-objdir-build-fix-20020813
Nathan Neulinger [Wed, 14 Aug 2002 02:22:09 +0000]

make objdir build that i keep breaking work again.

20 years agovenus-owntest-cleanup-20020813
Nathan Neulinger [Wed, 14 Aug 2002 02:21:23 +0000]

exit with errno on failures

20 years agosolaris-find-valid-cc-for-compiling-kernel-20020813
Harald Barth [Tue, 13 Aug 2002 20:07:44 +0000]

configure test to find solaris cc since we can't (yet) compile
kernel module with gcc on solaris.

20 years agoFix a vcache refcount leak in afs_root() on all platforms.
Nickolai Zeldovich [Mon, 12 Aug 2002 22:32:39 +0000]
Fix a vcache refcount leak in afs_root() on all platforms.

20 years agoSecond attempt at avoiding the use of newproc() on Solaris.
Nickolai Zeldovich [Mon, 12 Aug 2002 22:31:03 +0000]
Second attempt at avoiding the use of newproc() on Solaris.
This time, use thread_create to spawn a kernel thread, and
use a dummy packet to wake up the listener during shutdown.

20 years agoOnly put xdr_int64.o on the linker's argument list once. It's already
Nickolai Zeldovich [Mon, 12 Aug 2002 22:29:28 +0000]
Only put xdr_int64.o on the linker's argument list once.  It's already
listed in, so no need to specify it again.

20 years agoDon't print out-of-range index error messages when all it means
Nickolai Zeldovich [Mon, 12 Aug 2002 22:27:51 +0000]
Don't print out-of-range index error messages when all it means
is that we've reached the end of the server list.

20 years agolinux-symbol-export-test-20020810
Derrick Brashear [Sat, 10 Aug 2002 07:32:21 +0000]

test for tasklist_lock being exported

discussion on openafs-devel to follow

20 years agolinux-gcpags-smp-safeness-20020810
Derrick Brashear [Sat, 10 Aug 2002 07:31:13 +0000]

hold tasklist_lock in the right place. doesn't yet address versions which don't export it.

20 years agoSet the maxfilesize rlimit to infinity while writing to cache files
Nickolai Zeldovich [Fri, 9 Aug 2002 22:15:12 +0000]
Set the maxfilesize rlimit to infinity while writing to cache files
to avoid potential truncation if the user's rlimit is too low.  This
bug likely also exists in AIX, DARWIN, DUX, FBSD, HPUX and NBSD, but
surprisingly IRIX got this right.

20 years agonetinfo-support-fake-ips-for-nat-20020808
Derrick Brashear [Thu, 8 Aug 2002 19:46:13 +0000]

basically verbatim from Todd DeSantis, cleared for release by IBM

20 years agoClean up the prefetch code for Linux, by calling afs_PrefetchChunk
Chas Williams [Tue, 6 Aug 2002 20:49:00 +0000]
Clean up the prefetch code for Linux, by calling afs_PrefetchChunk
directly rather than changing the ifdef's in afs_UFSRead.

20 years agopam-afs-man-page-20020806
Charles Clancy [Tue, 6 Aug 2002 19:58:02 +0000]

our first real man page. now, we just need a few hundred others.

20 years agoFix some of the things that break compilation on Windows.
Nickolai Zeldovich [Tue, 6 Aug 2002 19:21:54 +0000]
Fix some of the things that break compilation on Windows.

20 years agovos-listaddrs-avoid-holes-in-index-20020805
Derrick Brashear [Mon, 5 Aug 2002 23:07:12 +0000]

index may have holes in it, so make sure we actually walk over the number
of entries we expect

20 years agodcache-fix-alen-miscalculation-bug-20020805
Hartmut Reuter [Mon, 5 Aug 2002 22:03:34 +0000]

*alen was being calculated wrong in GetDCache
also fix fstrace items

20 years agoUpdate NEWS file with user visible changes in 1.2.6.
Garry Zacheiss [Fri, 2 Aug 2002 08:01:04 +0000]
Update NEWS file with user visible changes in 1.2.6.

20 years agoInclude xdr.o and xdr_array.o in librx, to pick up xdr fix.
Garry Zacheiss [Fri, 2 Aug 2002 03:41:22 +0000]
Include xdr.o and xdr_array.o in librx, to pick up xdr fix.

20 years agoClean up partial write support on Linux by calling afs_DoPartialWrite
Chas Williams [Thu, 1 Aug 2002 19:08:13 +0000]
Clean up partial write support on Linux by calling afs_DoPartialWrite
from afs_linux_writepage_sync.

20 years agolinux-alloc-dont-drop-what-you-dont-have-20020801
Chas Williams [Thu, 1 Aug 2002 17:11:35 +0000]

avoid trying to drop a glock we don't have

20 years agoAdd a prototype of afs_GetRealCellByIndex to fix Irix build.
Garry Zacheiss [Thu, 1 Aug 2002 04:33:12 +0000]
Add a prototype of afs_GetRealCellByIndex to fix Irix build.

20 years agoInclude errno.h so this compiles again.
Garry Zacheiss [Thu, 1 Aug 2002 03:45:06 +0000]
Include errno.h so this compiles again.

20 years agoxdr-updates-20020731
Jeffrey Hutzelman [Thu, 1 Aug 2002 00:13:09 +0000]

update xdr so internal variables match what's being passed in

20 years agolinux-start-if-dynroot-even-if-no-network-20020731
Derek Atkins [Wed, 31 Jul 2002 23:41:02 +0000]

if we start with dynroot, dont worry if we have net or not

20 years agodeal-with-linux-EAGAIN-returns-when-receiving-20020731
Jeffrey Hutzelman [Wed, 31 Jul 2002 23:35:09 +0000]

sometimes you get EAGAIN from recvfrom, apparently if a packet comes in with a
bad checksum for instance. we should deal better.

20 years agolinux-alloc-drop-glock-if-we-can-20020731
Chas Williams [Wed, 31 Jul 2002 23:29:38 +0000]

if we can drop the glock, do so. allocate up to PAGE_SIZE with kmalloc before
switching to vmalloc

20 years agoafs-getcell-pioctl-should-be-able-to-provide-complete-list-20020731
Derrick Brashear [Wed, 31 Jul 2002 23:15:16 +0000]

don't use the LRUq since it can make us miss cells. don't use the existant
index because it includes cell aliases

20 years agolinux-note-we-use-interruptible-sleeps-in-non-compliant-manner-20020731
Derrick Brashear [Wed, 31 Jul 2002 22:54:41 +0000]

based on discussion with David Howells of RedHat

20 years agofix-fakestat-support-for-hardlinks-20020731 made afs_vnop_link.c
Nickolai Zeldovich [Wed, 31 Jul 2002 19:43:31 +0000]
fix-fakestat-support-for-hardlinks-20020731 made afs_vnop_link.c
not compile under Sun's cc, since it tried to take the address of
a register variable.  Don't declare the arguments as register.

20 years agoaix-make-ukernel-build-20020731
Hartmut Reuter [Wed, 31 Jul 2002 17:41:24 +0000]

make it compile under aix

20 years agoSupport afs_link() in volume roots when using fakestat.
Nickolai Zeldovich [Wed, 31 Jul 2002 14:43:17 +0000]
Support afs_link() in volume roots when using fakestat.

20 years agoEnable afs_DoPartialWrite() and afs_PrefetchChunk() in afs_UFSRead
Chas Williams [Tue, 30 Jul 2002 20:34:32 +0000]
Enable afs_DoPartialWrite() and afs_PrefetchChunk() in afs_UFSRead
and afs_UFSWrite for Linux; fixes deadlock condition for small
cache sizes.

20 years agoRemove two unnecessary casts that prevented compilation on Linux 2.2.
Nickolai Zeldovich [Mon, 29 Jul 2002 23:48:39 +0000]
Remove two unnecessary casts that prevented compilation on Linux 2.2.

20 years agoafs_PutVCache() takes a second argument, although it doesn't get used.
Nathan Neulinger [Mon, 29 Jul 2002 21:45:50 +0000]
afs_PutVCache() takes a second argument, although it doesn't get used.

20 years agoSupport empty CellServDB entries like arla; this is useful to
Nickolai Zeldovich [Mon, 29 Jul 2002 21:03:36 +0000]
Support empty CellServDB entries like arla; this is useful to
tell dynroot about the existence of a cell without hard-coding
the server list (it will be fetched from AFSDB).

20 years agoRe-encode struct fcntl back into Linux's struct file_lock so
Nickolai Zeldovich [Sat, 27 Jul 2002 19:06:08 +0000]
Re-encode struct fcntl back into Linux's struct file_lock so
that fcntl(F_GETLK) returns proper values to the user.

20 years agosolaris-nfs-module-updates-20020726
Derrick Brashear [Fri, 26 Jul 2002 21:55:13 +0000]

make it compile again

20 years agocleanup-pioctl-avoid-inadvertantly-setting-new-pags-due-to-gcc-20020726
Tino Schwarze [Fri, 26 Jul 2002 21:38:41 +0000]

fix operator precedence bug

20 years agoVerify that afs_GetCellByIndex() returns a valid cell -- it might
Nickolai Zeldovich [Fri, 26 Jul 2002 21:27:55 +0000]
Verify that afs_GetCellByIndex() returns a valid cell -- it might
be NULL if afs_NewCell() aborted partway through, which could be
the case of the CellServDB file has a typo.

20 years agopam-multi-cell-support-20020725
Charles Clancy [Fri, 26 Jul 2002 06:56:04 +0000]

"will let you do
something like:

auth optional   /lib/security/ cell
auth sufficient /lib/security/ try_first_pass refresh_token \
auth required   /lib/security/

You need to specify "refresh_token" the second time you call it to prevent
it from getting a second PAG and making your first token useless.

Or, you can just use it once to authenticate to a cell other than what's
in /usr/vice/etc/ThisCell.  Not specifying the "cell" argument causes the
expected behavior of authenticating against the local cell."

20 years agovos-examine-print-extra-stuff-if-so-compiled-20020725
Jeffrey Hutzelman [Fri, 26 Jul 2002 06:45:51 +0000]

the --enable-full-vos-listvol-switch configure switch also compiles
in this extended vos examine info

20 years agojafs-library-20020725
Manuel Pereira [Fri, 26 Jul 2002 06:33:59 +0000]

Java API work

20 years agowindows-no-more-files-workaround-20020725
Ryan Lantzer [Fri, 26 Jul 2002 06:09:56 +0000]

work around erroneous "no more files" error in winnt client

20 years agotbutc-uses-not-thread-safe-status-20020725
Rainer Toebbicke [Fri, 26 Jul 2002 05:58:39 +0000]

"The multithreaded butc (src/tbutc/butc) includes bucoord/status.o, which is
compiled together with the other bucoord stuff without MT_CFLAGS and hence
without AFS_PTHREAD_ENV defined. Alas, it uses ObtainWriteLock and other
macros out of lock.h which *are* sensitive to AFS_PTHREAD_ENV. Consequently,
butc can hang trying to acquire the statusQueueLock when dumping volumes, in
particular if 'backup status' commands are issued frequently.

A proper fix would probably be to push some of those macros out of lock.h and
make them subroutines in lock.c.

A quick fix is ensuring status.c gets recompiled in tbutc/"

20 years agolinux-try-to-reduce-invasiveness-of-flushdcachechildren-20020725
Chas Williams [Fri, 26 Jul 2002 00:37:51 +0000]

try to become less invasive about dcache child flushing

20 years agolinux-cleanup-rx-cv-locking-20020725
Chas Williams [Fri, 26 Jul 2002 00:29:52 +0000]

cleanup wait queue usage
grab glock before mutex (like all other ports)

20 years agolinux-hold-glock-across-dentry-trace-entries-while-tracing-20020725
Chas Williams [Fri, 26 Jul 2002 00:11:30 +0000]

this is actually rather scary

20 years agorevert-linux-use-d-prune-aliases-instead-of-try-dcache-children-20020725
Chas Williams [Thu, 25 Jul 2002 21:45:10 +0000]

not currently safe on smp kernel uniprocessor systems for some reason. revert.
also fix unlock/dget ordering to be consistent

20 years agoWork around MacOSX Finder's behavior by returning ENOENT when the user
Nickolai Zeldovich [Tue, 23 Jul 2002 00:04:22 +0000]
Work around MacOSX Finder's behavior by returning ENOENT when the user
tries to look up Contents or .DS_Store in an uncached volume root.

20 years agoCorrectly check for 32-bit file size limitations on Solaris;
Nickolai Zeldovich [Mon, 22 Jul 2002 22:23:43 +0000]
Correctly check for 32-bit file size limitations on Solaris;
the MAXOFF_T value changed from 32-bit to 64-bit in Solaris 7.

20 years agoTranslate faultcode_t return values from vm routines into errno codes.
Nickolai Zeldovich [Mon, 22 Jul 2002 19:32:34 +0000]
Translate faultcode_t return values from vm routines into errno codes.

20 years agolinux-dentry-deletion-for-unlinked-files-22-version-20020721
Chas Williams [Mon, 22 Jul 2002 04:47:24 +0000]

make it work for 2.2 kernels also
also some debugging

20 years agoTry to update attributes for volume roots when they become available,
Nickolai Zeldovich [Sat, 20 Jul 2002 09:12:23 +0000]
Try to update attributes for volume roots when they become available,
under Linux with fakestat.

20 years agoMinor internal cleanup of fakestat's afs_EvalFakeStat and
Nickolai Zeldovich [Sat, 20 Jul 2002 08:57:17 +0000]
Minor internal cleanup of fakestat's afs_EvalFakeStat and
afs_TryEvalFakeStat; no functional change.

20 years agoVN_RELE calls osi_iput on Linux which tries to get GLOCK.
Nickolai Zeldovich [Sat, 20 Jul 2002 08:53:33 +0000]
VN_RELE calls osi_iput on Linux which tries to get GLOCK.
Don't call VN_RELE while holding GLOCK.

20 years agolinux-dentry-delete-so-unlinked-files-die-nicely-20020718
Chas Williams [Thu, 18 Jul 2002 13:27:48 +0000]

"d_delete: needs to call iput() to decrement i_count, which
you get by returning 1 instead of 0.

looking at the other fs schemes (actually its pretty clear in the
nfs code too) i see that they return 1 for 'is_bad_inode()'."

20 years agosolaris-placate-gmake-builds-20020718
Joakim Fallsjö [Thu, 18 Jul 2002 13:10:46 +0000]

so gmake will find the necessary source files

20 years agohpux-updates-20020716
Derrick Brashear [Tue, 16 Jul 2002 23:24:54 +0000]

get us closer to building

20 years agoprovide an example CellAlias file.
Nickolai Zeldovich [Tue, 16 Jul 2002 18:39:50 +0000]
provide an example CellAlias file.

20 years agofreebsd-isnt-darwin-20020713
Chaskiel M Grundman [Sat, 13 Jul 2002 04:30:54 +0000]

update rc script for freebsd

20 years agofreebsd-chunk-corruption-fix-20020713
Chaskiel M Grundman [Sat, 13 Jul 2002 04:28:28 +0000]

This patch will fix the "freebsd can't read files > 1 chunk" problem. It
will almost certainly not fix the "cache files get the bootloader written
into them" problem, but there is a miniscule chance:

20 years agolibjaufs-build-fix-20020713
Joakim Fallsjö [Sat, 13 Jul 2002 04:25:23 +0000]

make it install cleanly

20 years agolinux-use-d-prune-aliases-instead-of-try-dcache-children-20020712
Chas Williams [Fri, 12 Jul 2002 21:41:59 +0000]

clean up dcache entries with function provided in the kernel instead
of by making our own. experimental.

20 years agouuid-dont-require-snprintf-in-ukernel-20020711
Derrick Brashear [Thu, 11 Jul 2002 23:10:16 +0000]

because obviously not everything has it

20 years agodarwin-vm-bugfix-for-running-apps-out-of-afs-20020710
Chaskiel M Grundman [Thu, 11 Jul 2002 03:32:52 +0000]

this "fixes a problem that causes the afs kernel code to spew
into syslog if a long running application is run out of /afs"

20 years agokaserver-set-realm-name-in-tgts-20020708
Derrick Brashear [Mon, 8 Jul 2002 21:17:38 +0000]

based on comment from Chaskiel Grandman regarding observed poor
interoperability of klog-generated tgts with other kdcs where key is
otherwise same

20 years agolibadmin-vsprocs-use-volint-prototyping-20020702
Derrick Brashear [Tue, 2 Jul 2002 06:01:40 +0000]

use the prototyping from volint.h

20 years agolibuafs-build-juafs-everywhere-20020702
Derrick Brashear [Tue, 2 Jul 2002 05:53:25 +0000]

copy this crap to the other makefiles

20 years agoafs-uuid-no-string-functions-in-kernel-20020701
Derrick Brashear [Mon, 1 Jul 2002 17:26:29 +0000]

some kernels have no sscanf. don't do it.

20 years agonetbsd-16-initial-support-20020630
Love Hörnquist-Åstrand [Sun, 30 Jun 2002 18:13:36 +0000]

allow us to configure for nbsd 16

20 years agoopenafs-tools-update-20020630
Jeremy Stribling [Sun, 30 Jun 2002 08:43:11 +0000]

updates for openafs-tools command suite

20 years agoignore-more-20020630
Love Hörnquist-Åstrand [Sun, 30 Jun 2002 08:05:08 +0000]

ignore more stuff at the top-level

20 years agofreebsd-initial-46-support-20020630
Chaskiel M Grundman [Sun, 30 Jun 2002 07:48:47 +0000]

make it build for 4.6

20 years agolinux-fix-readdir-hinting-20020630
Chas Williams [Sun, 30 Jun 2002 07:39:12 +0000]

an earlier patch erroneously removed this

20 years agolinux-gcpags-support-20020625
Derrick Brashear [Tue, 25 Jun 2002 16:25:43 +0000]

might even work

20 years agolinux-kernel-detect-gfp-mask-in-struct-address-space-20020624
Derrick Brashear [Tue, 25 Jun 2002 16:02:11 +0000]

based on report that new redhat kernels need this

20 years agolinux-sleep-wakeup-cleanup-20020624
Chas Williams [Mon, 24 Jun 2002 23:18:18 +0000]

"cleanup osi_sleep.c to remove some additional races.  this patches
removes AFS_GLOBAL_SUNLOCK and just uses that case to handle both
smp and non smp cases.  osi_TimedSleep always sleeps atleast 1 hz.
(it also always sleeps interruptibly -- you might get some extra
loops but this is better than the load average running away)
sleep_on's are replaced with the more appropriate add_waitq/schedule
sequence.  getevent is called after addevent since there is no
danger of GLOCK dropping.  getevent/addevent isnt re-merged since
osi_Wakeup doesnt create entries in the event table."

20 years agovol-allocate-partition-names-dynamically-to-avoid-problems-with-vx-stuff-20020624
Kris Van Hees [Mon, 24 Jun 2002 20:09:59 +0000]

otherwise long device paths can screw you

20 years agolinux-dont-install-osi-vfs-h-when-no-kernel-module-20020611
Derrick Brashear [Mon, 24 Jun 2002 18:34:02 +0000]

do --disbale-kernel-mdoule build works

This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.

the rest of the patch

20 years agoubik-pause-collapsing-20020624
Marcus Watts [Mon, 24 Jun 2002 17:30:34 +0000]

I'm told that after we introduce ptserver nested groups we can expect to
see periodic pauses in ubik operations, and this fixes the problem. if it
happens, we can start with the UBIK_PAUSE code and go from there

20 years agolinux-more-osi-sleep-wakeup-fun-20020624
Chas Williams [Mon, 24 Jun 2002 16:40:41 +0000]

"the attached patch 'fixes', in my opinion, in osi_alloc.  objects <=
AFS_SMALLOCSIZ are alloced with kmalloc, other vmalloc.  if kmalloc
fails it doesnt fail over to vmalloc.  TASK_RUNNING is set after
schedule.  it doesnt drop the GLOCK.  i moved the allocator init
later so that it doesnt need to toggle the semaphore just before
going to linux_alloc."

20 years agoufsread-save-the-oops-for-where-we-expect-it-20020624
Derrick Brashear [Mon, 24 Jun 2002 16:23:40 +0000]

based on comment from

20 years agodcache-locking-cleanup-20020624
Pavel Semerad [Mon, 24 Jun 2002 16:03:34 +0000]

don't oops if getDCache failed

20 years agoUpdate_TargetVnodeStatus() checks and strips setuid bits for non admin
Richard Basch [Sat, 22 Jun 2002 05:32:45 +0000]
Update_TargetVnodeStatus() checks and strips setuid bits for non admin
clients; it should do the same thing for setgid files.

20 years agoAdd afsUUID_to_string() and afsUUID_from_string() utility functions, from
Derrick Brashear [Sat, 22 Jun 2002 05:26:52 +0000]
Add afsUUID_to_string() and afsUUID_from_string() utility functions, from

20 years agoUse:
Garry Zacheiss [Sat, 22 Jun 2002 05:24:49 +0000]

#define CONFIG_SMP 1

instead of:

#define CONFIG_SMP

to fix recent Redhat kernel which used #if CONFIG_SMP instead of
#ifdef CONFIG_SMP in some kernel headers.

20 years agolinux-newvcache-make-sure-we-dont-try-to-iterate-null-pointer-20020615
Derrick Brashear [Sat, 15 Jun 2002 18:11:18 +0000]

based on report from
not clear this is sufficient

20 years agoafsd-dont-print-garbage-on-bad-cacheinfo-file-20020615
Derrick Brashear [Sat, 15 Jun 2002 17:52:00 +0000]

based on report from

don't bother printing anything we parsed, since we're guaranteed at least
one item is trash anyhow