On Tue, Aug 06, 2013 at 12:06:52PM +0530, Saket Sinha wrote:
I have to support pushd and popd from userspace in a filesystem that I have designed.
In my filesystem driver, to implement it I have done the following
for popd - the driver implementation is https://github.com/disdi/hepunion/blob/master/fs/hepunion/hepunion.h#L386 #define pop_root() \ current->fsuid = context->uid; \ current->fsgid = context->gid; \ recursive_mutex_unlock(&context->id_lock)
What you're seeing there are *not* implementations of the pushd/popd bash commands; these just use chdir, as you can find out by running bash under strace.
for pushd - the driver implementation is https://github.com/disdi/hepunion/blob/master/fs/hepunion/hepunion.h#L393 #define push_root() \ recursive_mutex_lock(&context->id_lock); \ context->uid = current->fsuid; \ context->gid = current->fsgid; \ current->fsuid = 0; \ current->fsgid = 0
But this implementation is failing at run time.
How is it failing? Thanks, Jonathan Neuschäfer