<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.file-systems.arla.general">
    <title>gmane.comp.file-systems.arla.general</title>
    <link>http://blog.gmane.org/gmane.comp.file-systems.arla.general</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1433"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1432"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1431"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1430"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1429"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1425"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1424"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1423"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1422"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1421"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1420"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1419"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1418"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1416"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1415"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1414"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1413"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1412"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1411"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1410"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1433">
    <title>FW: Looking for AFS Information</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1433</link>
    <description>&lt;pre&gt;All,

Thank you all for your kind /prompt responses.  I am all set, no need for any more info.

Best Regards,

Ana

From: Morales, Ana
Sent: Monday, August 22, 2011 11:43 AM
To: 'arla-drinkers&amp;lt; at &amp;gt;stacken.kth.se'
Subject: Looking for AFS Information


Hello,



I see that Arla is a project that studies Andrew File system and it appears that you have implemented in your university?   Is this a project that still active at your university?    I am trying to find out if there are any vendors (or open source) that have taken  AFS and make it a product.    My understanding is that a while back IBM had purchased Transarc  but there is no support for that anymore.



I am looking for file systems products that can provide access to global data (flat files) efficiently in an optimized way, in real time; the clients can be sitting in multiple geographic locations.    I thought to write to you since seem very familiar with AFS and  perhaps can you provide me with names or refer me to someone   else that can help me pursue this.



Thanks for your help in advance!



Ana Morales
IT Market Research Analyst | IT Strategy, Architecture &amp;amp; Innovation
Intel Corp., Hudson, MA | office  978-553-5617






_______________________________________________
Arla-drinkers mailing list
Arla-drinkers&amp;lt; at &amp;gt;stacken.kth.se
https://lists.stacken.kth.se/mailman/listinfo/arla-drinkers
&lt;/pre&gt;</description>
    <dc:creator>Morales, Ana</dc:creator>
    <dc:date>2011-08-22T23:21:23</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1432">
    <title>Re: Looking for AFS Information</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1432</link>
    <description>&lt;pre&gt;Your File System, Inc. provides commercial support for advanced AFS
deployments based upon OpenAFS.  Under funding by the U.S. Department of
Energy YFS has developed an advanced implementation for clients and
servers providing enhanced performance, functionality and performance.
Later this year YFS will be announcing a line of storage appliances.

Please feel free to contact me directly for more information.

Jeffrey Altman
President
Your File System, Inc.


On 8/22/2011 11:43 AM, Morales, Ana wrote:

_______________________________________________
Arla-drinkers mailing list
Arla-drinkers&amp;lt; at &amp;gt;stacken.kth.se
https://lists.stacken.kth.se/mailman/listinfo/arla-drinkers
&lt;/pre&gt;</description>
    <dc:creator>Jeffrey Altman</dc:creator>
    <dc:date>2011-08-22T22:20:32</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1431">
    <title>Re: Looking for AFS Information</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1431</link>
    <description>&lt;pre&gt;For OpenAFS support, go here:
http://openafs.org/support.html

Jason
&lt;/pre&gt;</description>
    <dc:creator>Jason Edgecombe</dc:creator>
    <dc:date>2011-08-22T22:26:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1430">
    <title>Re: Looking for AFS Information</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1430</link>
    <description>&lt;pre&gt;I'm afraid Arla isn't actively maintained nowadays.

Take a look at http://openafs.org/
OpenAFS is based on the IBM/Transarc code and it is well maintained. They provide a list of companies that provide commercial support.

There is also an AFS client included in the standard Linux kernel if that's of any interest.

AFS is good at handling distributed reading of files that are not modified too much concurrently. It's probably not the fastest file system out there, but it's mature and OpenAFS supports a wide range of operating systems.

HTH
   /t
&lt;/pre&gt;</description>
    <dc:creator>Tomas Olsson</dc:creator>
    <dc:date>2011-08-22T21:05:44</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1429">
    <title>Looking for AFS Information</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1429</link>
    <description>&lt;pre&gt;Hello,



I see that Arla is a project that studies Andrew File system and it appears that you have implemented in your university?   Is this a project that still active at your university?    I am trying to find out if there are any vendors (or open source) that have taken  AFS and make it a product.    My understanding is that a while back IBM had purchased Transarc  but there is no support for that anymore.



I am looking for file systems products that can provide access to global data (flat files) efficiently in an optimized way, in real time; the clients can be sitting in multiple geographic locations.    I thought to write to you since seem very familiar with AFS and  perhaps can you provide me with names or refer me to someone   else that can help me pursue this.



Thanks for your help in advance!



Ana Morales
IT Market Research Analyst | IT Strategy, Architecture &amp;amp; Innovation
Intel Corp., Hudson, MA | office  978-553-5617






_______________________________________________
Arla-drinkers mailing list
Arla-drinkers&amp;lt; at &amp;gt;stacken.kth.se
https://lists.stacken.kth.se/mailman/listinfo/arla-drinkers
&lt;/pre&gt;</description>
    <dc:creator>Morales, Ana</dc:creator>
    <dc:date>2011-08-22T15:43:23</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1425">
    <title>Re: AFS and 'afs' URI scheme</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1425</link>
    <description>&lt;pre&gt;

I suppose this is _a_ right place to ask, but a better place would be
afs3-standardization&amp;lt; at &amp;gt;openafs.org, which is the official home of
standardization work related to the AFS 3 protocol suite.


I don't recall seeing any such discussion; where did this happen?

&lt;/pre&gt;</description>
    <dc:creator>Jeffrey Hutzelman</dc:creator>
    <dc:date>2011-03-31T22:56:29</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1424">
    <title>AFS and 'afs' URI scheme</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1424</link>
    <description>&lt;pre&gt;Hello all,

I am writing to request some information regarding AFS and its current 
implementations.  I hope this is the right list to ask.

So my question is whether the latest versions of current AFS 
implementation still use 'afs' URI scheme.  The 'afs' URI scheme can be 
found mentioned as reserved for further standardization in RFC 1738 
(http://tools.ietf.org/html/rfc1738) dated December 1994, but there is 
no any definition of the scheme's syntax/semantics.

Currently the 'afs' URI scheme is registered by IANA as Provisional with 
reference to RFC 1738.  In the previous year there were some some 
discussions in the IETF regarding what should be done with it.  However 
there was no consensus on any actions; two were proposed - move the 
scheme to Historical category or remain it as is.  I'd like to hear the 
opinion of AFS experts.

Thank you in advance,
Mykyta Yevstifeyev
_______________________________________________
Arla-drinkers mailing list
Arla-drinkers&amp;lt; at &amp;gt;stacken.kth.se
https://lists.stacken.kth.se/mailman/listinfo/arla-drinkers
&lt;/pre&gt;</description>
    <dc:creator>Mykyta Yevstifeyev</dc:creator>
    <dc:date>2011-03-31T14:51:20</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1423">
    <title>AFS &amp; Kerberos Best Practices Workshop 2011: Registration availableand other details</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1423</link>
    <description>&lt;pre&gt;Due to unforeseen circumstances, the opening of registration had been
delayed, but is now open!
Early registration ends April 20. Normal registration ends May 24.
Late registration (after May 24) will be available on-site.

Additionally, on Friday afternoon, there is an opportunity to visit
Lowe's Motor Speedway to experience NASCAR driving.  If we have
10 or more that commit to the racing experience, we will get a 10%
discount.  Options are either do the ride along which will cost
$116.99
for several laps around the track or you can do the driving experience
which will be a 3 hour training class which starts at 2:00 and then
you get to drive around the track for 5 minutes for $331.99.  The ride
along starts at 3:00 on Friday.  Here is the website if you want to
check it out:
www.nascarracingexperience.com.

As before, this year's Workshop will be held at the University of
North Carolina at
Charlotte, June 6-10, 2011.

We look forward to seeing you in Charlotte!
http://workshop.openafs.org/afsbpw11/

Derrick
for the Organizers of the AFS &amp;amp; Kerberos Workshop
&lt;/pre&gt;</description>
    <dc:creator>Derrick Brashear</dc:creator>
    <dc:date>2011-03-23T15:10:23</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1422">
    <title>AFS &amp; Kerberos Best Practices Workshop 2011: CFP extended tilSaturday; Registration available tomorrow</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1422</link>
    <description>&lt;pre&gt;The organizers of the AFS &amp;amp; Kerberos Best Practices Workshop 2011
previously announced the Call For Participation.  The CFP now closes
on March 5, 2011.
Acceptances will be made on a continuing schedule based on fit with other talks.

This year's Workshop will be held at the University of North Carolina at
Charlotte, June 6-10, 2011.

We look forward to hearing about your talk!
http://workshop.openafs.org/afsbpw11/cfp.html

Additionally, registration will be available tomorrow.

Derrick
for the Organizers of the AFS &amp;amp; Kerberos Workshop
&lt;/pre&gt;</description>
    <dc:creator>Derrick Brashear</dc:creator>
    <dc:date>2011-03-03T15:19:43</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1421">
    <title>CFP: AFS &amp; Kerberos Best Practices Workshop 2011</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1421</link>
    <description>&lt;pre&gt;The organizers of the AFS &amp;amp; Kerberos Best Practices Workshop 2011
announces the Call For Participation.  The CFP closes on March 1, 2011.
Acceptances will be made on a continuing schedule based on fit with
other talks.

This year's Workshop will be held at the University of North Carolina at
Charlotte, June 6-10, 2011.


The AFS &amp;amp; Kerberos Best Practices Workshop is a week long conference
for those who work with OpenAFS and Kerberos, from the novice to the
experienced.  The week is filled with two full-day classes introducing
AFS and Kerberos and two and one half days of talks by your peers and
colleagues.

 - Work completed                   - Work in progress
 - Theories                               - Best practices
 - Related research                  - Updates on previous talks
 - Advanced tutorials                - Panel sessions

or something else that has come to you while working with AFS and/or
Kerberos.

Talks are encouraged from basic to complex.  Topics may include, but
are not limited to:

AFS best practices                      AFS performance tuning
Benchmarking                             AFS server scaling
Service monitoring                      AFS &amp;amp; Kerberos 5
AFS related tools                        Kerberos related tools
Upgrade strategies                     Unique uses of AFS and/or Kerberos
Backups                                      Web integration
Administration delegation            AFS on non-Unix platforms
Automation                              Work on new features


Past talks have included:

Using Kebreros for Web Authentication   Accessing OpenAFS Through The Web
Backup Strategies                                    A View of Rx
Kerberos &amp;amp; Grid Systems                         Automated Keytab Installations
Hacking AFS Dump Volumes                   Your First Submission to OpenAFS
Tuning the OpenAFS Unix Client Cache Manager
Customizing installers for OpenAFS and Kerberos for Windows
NetBSD, Kerberos &amp;amp; AFS: From Zero to Distributed Filesystem in N Easy Steps

We look forward to hearing about your talk!
http://workshop.openafs.org/afsbpw11/cfp.html

Derrick
for the Organizers of the AFS &amp;amp; Kerberos Workshop
&lt;/pre&gt;</description>
    <dc:creator>Derrick Brashear</dc:creator>
    <dc:date>2011-02-04T00:22:02</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1420">
    <title>Re: [OpenAFS] Consensus Call - AFS3-Standardization Charter --nomination/Kim</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1420</link>
    <description>&lt;pre&gt;Hi Jeffrey,

Jeff Altman asked me to respond to your email about nomination for the 
standardization work.

Can't find that email, but I do accept the nomination, which I believe 
is what Jeff A was after.

Thanks.

Kim


On 7/7/10 5:08 PM, Jeffrey Hutzelman wrote:
&lt;/pre&gt;</description>
    <dc:creator>Kim Kimball</dc:creator>
    <dc:date>2010-08-24T20:24:11</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1419">
    <title>Re: Arla on Mac OS 10.6</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1419</link>
    <description>&lt;pre&gt;Any chance you could provide a core dump or panic log?

See
http://developer.apple.com/mac/library/technotes/tn2002/tn2063.html
http://developer.apple.com/mac/library/technotes/tn2004/tn2118.html

I'll try to catch up with the patches.

thanks
   /t
&lt;/pre&gt;</description>
    <dc:creator>Tomas Olsson</dc:creator>
    <dc:date>2010-07-28T20:15:36</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1418">
    <title>Re: Arla on Mac OS 10.5</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1418</link>
    <description>&lt;pre&gt;Great!

I found some old instructions on building arla on MacOS, for use in a dmg.
See below. Perhaps it can be helpful if you want to use more recent
heimdal. And I trust you've already found make-mac-package.sh.in in the
cvs tree.

/t

Building heimdal and arla for Mac OS X:
get the latest libtool and automake/-conf
 (for example, http://www.pdc.kth.se/~tol/habahat.sh, run habahat.sh,
  export PATH)
get ftp://ftp.pdc.kth.se/pub/heimdal/src/snapshots/heimdal-20060317
unpack heimdal
cd heimdal-2006...
do `autoreconf -f -i` to be able to handle CFLAGS properly, with the new
 libtool etc.

cd &amp;lt;your build dir&amp;gt;

on ppc, run heimdal-2006.../configure CFLAGS='-O2 -g -isysroot/Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc' &amp;amp;&amp;amp; make
or,
on intel, run heimdal-2006.../configure CFLAGS='-O2 -g -arch i386 -arch ppc' &amp;amp;&amp;amp; make

make install


Arla:
(sh HACKING if needed (to regenerate configure in cvs tree))
configure --with-krb5=&amp;lt;your heimdal&amp;gt; --without-x CFLAGS=&amp;lt;as above&amp;gt; &amp;amp;&amp;amp; make
&lt;/pre&gt;</description>
    <dc:creator>Tomas Olsson</dc:creator>
    <dc:date>2010-07-28T19:55:59</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1416">
    <title>Re: [AFS3-std] Consensus Call - AFS3-Standardization Charter</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1416</link>
    <description>&lt;pre&gt;

I support this.

Regards,
Mike
&lt;/pre&gt;</description>
    <dc:creator>Michael Meffie</dc:creator>
    <dc:date>2010-07-16T13:05:08</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1415">
    <title>Re: Arla on Mac OS 10.6</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1415</link>
    <description>&lt;pre&gt;
Hello,

I have now tested Arla on Mac OS 10.6 also and the result was the same as 
for 10.5, that is if you install the binary package for 10.4 and update 
the kernel module it will work fine except for the shutdown bug. I used 
the same driver that I compiled for 10.5 for instructions see my previous 
mail. Only one small change was needed in the startup script for arla, 
chancge kextload to kextutil or remove option "-s".

So the only thing that is left to solve is the shutdown bug.

Bo Branten
&lt;/pre&gt;</description>
    <dc:creator>Bo Brantén</dc:creator>
    <dc:date>2010-07-15T18:25:50</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1414">
    <title>Re: Arla on Mac OS 10.5</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1414</link>
    <description>&lt;pre&gt;
A few aditional things:

After ./configure but before make edit arla-0.90/include/config.h so it 
says: #define HAVE_OPENSSL 1

If using ./configure --with-krb5=/usr/arla instead of heimdal all the apps 
and libs compile clean and one don't need to install heimdal, this works 
fine on 10.4 and 10.5.

When shuttding down the computer crashes as others has reported already on 
this mailing list, I don't think I have the knowledge to debug that 
problem so I leave it to others and continue to test on Mac OS 10.6 
instead.

&lt;/pre&gt;</description>
    <dc:creator>Bo Brantén</dc:creator>
    <dc:date>2010-07-12T15:55:34</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1413">
    <title>Arla on Mac OS 10.5</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1413</link>
    <description>&lt;pre&gt;
As has been reported here before the binary distribution of Arla 0.90 for 
Mac OS available on stacken works on 10.4 but on 10.5 one get an error on 
multiple symbols for some string functions when trying to load the kernel 
module so I tryed to compile arla myself on 10.5 and here is how it whent:

Install the binary disribution for 10.4 (only the kernel module needs to 
be updated for 10.5)
Install heimdal
Install openssl
in arla-0.90 run: ./configure --with-krb5=/usr/heimdal
patch nnpfs/bsd/nnpfs_common.c:
patch nnpfs/bsd/nnpfs_syscalls-common.c:
&amp;lt; #ifdef HAVE_KERNEL_KAUTH_CRED_GETUID
---
&amp;lt; #else
---
&amp;lt; #endif
---
compile arla, nnpfs will be built, compiling apps and libs will fail but 
we only need the kernel module...
sudo cp /Users/bobranten/src/arla-0.90/nnpfs/bsd/nnpfs_mod.o 
/usr/arla/bin/nnpfs.kext/Contents/MacOS/nnpfs
sudo chmod +x /usr/arla/bin/nnpfs.kext/Contents/MacOS/nnpfs
sudo /usr/arla/sbin/startarla
ls /afs/stacken.kth.se/ftp/pub
cat /afs/stacken.kth.se/ftp/pub/README
It works!

Bo Branten
&lt;/pre&gt;</description>
    <dc:creator>Bo Brantén</dc:creator>
    <dc:date>2010-07-12T13:33:42</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1412">
    <title>How to compile Arla on Mac OS</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1412</link>
    <description>&lt;pre&gt;
Hello,

I intended to try Arla on different versions of Mac OS and started with 
10.4, the binary package on stacken works fine as expected but before 
moving on to 10.5 I wanted to compile it myself on 10.4 first and I got 
the compile error shown below, I tryed both just ./configure and 
./configure --with-krb5=/usr/heimdal and got the same error so I wanted to 
ask if anyone has an advice on this?

Bo Branten

...
Making all in rxkad
/bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. 
-I../include -I../include -I../lib/roken -I../lib/roken -I../include -I. 
-I. -I../include -I./../include -I.. -I./.. -I../include 
-I/usr/heimdal/include     -Wall -Wmissing-prototypes -Wpointer-arith 
-Wbad-function-cast -Wmissing-declarations -Wnested-externs -DINET6 -g 
-Wall -Wmissing-prototypes -Wpointer-arith -Wmissing-declarations 
-Wnested-externs -c -o rxk_serv.lo rxk_serv.c
  gcc -DHAVE_CONFIG_H -I. -I. -I../include -I../include -I../lib/roken 
-I../lib/roken -I../include -I. -I. -I../include -I./../include -I.. 
-I./.. -I../include -I/usr/heimdal/include -Wall -Wmissing-prototypes 
-Wpointer-arith -Wbad-function-cast -Wmissing-declarations 
-Wnested-externs -DINET6 -g -Wall -Wmissing-prototypes -Wpointer-arith 
-Wmissing-declarations -Wnested-externs -c rxk_serv.c -o rxk_serv.o
In file included from ./krb4.h:82,
                  from rxk_serv.c:47:
./krb4-protos.h:95: error: parse error before 'DES_cblock'
rxk_serv.c: In function 'decode_krb4_ticket':
rxk_serv.c:376: error: 'DES_cblock' undeclared (first use in this 
function)
rxk_serv.c:376: error: (Each undeclared identifier is reported only once
rxk_serv.c:376: error: for each function it appears in.)
rxk_serv.c:376: error: parse error before 'key'
rxk_serv.c:377: error: 'DES_key_schedule' undeclared (first use in this 
function)
rxk_serv.c:384: error: 'key' undeclared (first use in this function)
rxk_serv.c:385: warning: implicit declaration of function 'DES_key_sched'
rxk_serv.c:385: warning: nested extern declaration of 'DES_key_sched'
rxk_serv.c:385: error: 'serv_sched' undeclared (first use in this 
function)
rxk_serv.c:392: error: parse error before ')' token
make[1]: *** [rxk_serv.lo] Error 1
make: *** [all-recursive] Error 1
bo-brantens-dator:~/src/arla-0.90 bobranten$
&lt;/pre&gt;</description>
    <dc:creator>Bo Brantén</dc:creator>
    <dc:date>2010-07-11T22:26:40</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1411">
    <title>Re: PATCH: Arla CVS Current on Linux 2.6.24-2.6.35-rc1</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1411</link>
    <description>&lt;pre&gt;
fix for leak in a reference count

(this patch is rather small now since tol has checked in all the other 
stuff in CVS)

Bo Branten
diff -uprN arla-new-cvs.bak/nnpfs/linux/nnpfs_syscalls.c arla-new-cvs/nnpfs/linux/nnpfs_syscalls.c
--- arla-new-cvs.bak/nnpfs/linux/nnpfs_syscalls.c2010-06-29 23:14:15.000000000 +0200
+++ arla-new-cvs/nnpfs/linux/nnpfs_syscalls.c2010-07-11 18:45:36.002095539 +0200
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -257,7 +257,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_get_pag_group(void)
 #endif
     int i;
 
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     get_group_info(gi);
+#endif
 
     i = find_pag(gi);
     if (i != NNPFS_PAG_NOTFOUND)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -287,7 +289,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; store_pag(nnpfs_pag_t pagnum)
     int found = 0;
     int i, k;
     
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)    
     get_group_info(old_gi);
+#endif
 
     i = find_pag(old_gi);
     if (i != NNPFS_PAG_NOTFOUND)
_______________________________________________
Arla-drinkers mailing list
Arla-drinkers&amp;lt; at &amp;gt;stacken.kth.se
https://lists.stacken.kth.se/mailman/listinfo/arla-drinkers
&lt;/pre&gt;</description>
    <dc:creator>Bo Brantén</dc:creator>
    <dc:date>2010-07-11T16:59:31</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1410">
    <title>Re: PATCH: Arla 0.90 on Linux 2.6.24-2.6.35-rc1</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1410</link>
    <description>&lt;pre&gt;
fix for leak in a reference count

Bo Branten
diff -uprN arla-0.90/nnpfs/linux/nnpfs_blocks.c arla-0.90-new/nnpfs/linux/nnpfs_blocks.c
--- arla-0.90/nnpfs/linux/nnpfs_blocks.c2007-01-08 14:24:24.000000000 +0100
+++ arla-0.90-new/nnpfs/linux/nnpfs_blocks.c2010-07-11 17:18:26.572458961 +0200
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -34,7 +34,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-/* $Id: nnpfs_blocks.c,v 1.3 2007/01/08 13:24:24 tol Exp $ */
+/* $Id: nnpfs_blocks.c,v 1.4 2008/03/08 21:38:16 tol Exp $ */
 
 #include &amp;lt;nnpfs/nnpfs_locl.h&amp;gt;
 #include &amp;lt;nnpfs/nnpfs_fs.h&amp;gt;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -302,6 +302,24 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_block_extend(struct nnpfs_node *no
     return ret;
 }
 
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2, 6, 23)
+/*
+ * Helper to emulate vfs_path_lookup() on linux &amp;lt; 2.6.23
+ */
+static int
+vfs_path_lookup(struct dentry *dentry, struct vfsmount *mnt,
+const char *cachename, unsigned int flags,
+struct nameidata *nd)
+{
+    nd-&amp;gt;dentry = dget(dentry);
+    nd-&amp;gt;mnt = mntget(mnt);
+    nd-&amp;gt;last_type = LAST_ROOT;
+    nd-&amp;gt;depth = 0;
+    nd-&amp;gt;flags = flags;
+    return path_walk(cachename, nd);
+}
+#endif /* LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2, 6, 23) */
+
 /*
  * open indicated cache block file. needs to be closed by caller.
  *
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -322,6 +340,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_block_open(struct nnpfs_node *node
     uid_t saveuid;
     gid_t savegid;
     int ret;
+#if LINUX_VERSION_CODE &amp;gt;= KERNEL_VERSION(2,6,29)
+    const struct cred *old_cred;
+    struct cred *override_cred;
+#endif
 
     BUG_ON(!nnpfsp);
     BUG_ON(flags &amp;amp; O_CREAT &amp;amp;&amp;amp; file != NULL);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -346,21 +368,26 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_block_open(struct nnpfs_node *node
     BUG_ON(!nnpfsp-&amp;gt;cachedir || !nnpfsp-&amp;gt;cacheroot);
     
     /* use the nfsd trick to give us access */
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     saveuid = current-&amp;gt;fsuid;
     savegid = current-&amp;gt;fsgid;
     current-&amp;gt;fsuid = nnpfsp-&amp;gt;uid;
     current-&amp;gt;fsgid = nnpfsp-&amp;gt;gid;
-
-    nd.dentry = dget(nnpfsp-&amp;gt;cachedir);
-    nd.mnt = mntget(nnpfsp-&amp;gt;cacheroot);
-    nd.last_type = LAST_NORM;
-    nd.depth = 0;
-    nd.flags = 0;
-    
-    if (flags &amp;amp; O_CREAT)
-nd.flags = LOOKUP_PARENT;
-    
-    ret = path_walk(cachename, &amp;amp;nd);
+#else
+    saveuid = current_fsuid();
+    savegid = current_fsgid();
+    override_cred = prepare_creds();
+    if (!override_cred)
+        return -ENOMEM;
+    override_cred-&amp;gt;fsuid = nnpfsp-&amp;gt;uid;
+    override_cred-&amp;gt;fsgid = nnpfsp-&amp;gt;gid;
+    old_cred = override_creds(override_cred);
+#endif
+
+    ret = vfs_path_lookup(nnpfsp-&amp;gt;cachedir, nnpfsp-&amp;gt;cacheroot,
+  cachename,
+  flags &amp;amp; O_CREAT ? LOOKUP_PARENT : 0,
+  &amp;amp;nd);
     if (ret) {
 uint32_t nmasks = node-&amp;gt;data.nmasks;
 uint32_t mask;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -391,12 +418,21 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_block_open(struct nnpfs_node *node
 if (IS_ERR(dentry)) {
     ret = PTR_ERR(dentry);
 } else {
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,25)
     ret = vfs_create(nd.dentry-&amp;gt;d_inode, dentry, S_IRUSR|S_IWUSR, &amp;amp;nd);
+#else
+    ret = vfs_create(nd.path.dentry-&amp;gt;d_inode, dentry, S_IRUSR|S_IWUSR, &amp;amp;nd);
+#endif
     dput(dentry);
 }
 
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,25)
 mutex_unlock(&amp;amp;nd.dentry-&amp;gt;d_inode-&amp;gt;i_mutex);
 path_release(&amp;amp;nd);
+#else
+mutex_unlock(&amp;amp;nd.path.dentry-&amp;gt;d_inode-&amp;gt;i_mutex);
+path_put(&amp;amp;nd.path);
+#endif
 
 if (ret) {
     printk("nnpfs_block_open(%s) create failed: %d\n", cachename, -ret);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -410,12 +446,22 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_block_open(struct nnpfs_node *node
     ret = nnpfs_block_extend(node, offset);
 }
     } else {
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,25)
 struct file *f = dentry_open(nd.dentry, nd.mnt, flags);
+#elif LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,29)
+struct file *f = dentry_open(nd.path.dentry, nd.path.mnt, flags);
+#else
+        struct file *f = dentry_open(nd.path.dentry, nd.path.mnt, flags, current_cred());
+#endif
 if (IS_ERR(f)) {
     ret = PTR_ERR(f);
     printk("nnpfs_block_open(%s) open failed: %d\n", cachename, -ret);
     nnpfs_debug_oops();
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,25)
     path_release(&amp;amp;nd);
+#else
+    path_put(&amp;amp;nd.path);
+#endif
 } else {
     *file = f;
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -424,8 +470,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_block_open(struct nnpfs_node *node
     /* path_release() is usually handled on close */
 
  out:
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     current-&amp;gt;fsuid = saveuid;
     current-&amp;gt;fsgid = savegid;
+#else
+    revert_creds(old_cred);
+    put_cred(override_cred);
+#endif
 
     return ret;
 }
diff -uprN arla-0.90/nnpfs/linux/nnpfs_inodeops.c arla-0.90-new/nnpfs/linux/nnpfs_inodeops.c
--- arla-0.90/nnpfs/linux/nnpfs_inodeops.c2006-12-11 17:35:26.000000000 +0100
+++ arla-0.90-new/nnpfs/linux/nnpfs_inodeops.c2010-07-11 17:18:26.572458961 +0200
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -48,7 +48,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;asm/fcntl.h&amp;gt;
 
 #ifdef RCSID
-RCSID("$Id: nnpfs_inodeops.c,v 1.223 2006/12/11 16:35:26 tol Exp $");
+RCSID("$Id: nnpfs_inodeops.c,v 1.224 2008/03/08 21:40:10 tol Exp $");
 #endif
 
 static int
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -105,7 +105,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_vma_close (struct vm_area_struct *
 }
 
 static struct vm_operations_struct nnpfs_file_vm_ops = {
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2, 6, 23)
     .nopage= filemap_nopage,
+#else
+    .fault      = filemap_fault,
+#endif
     .close= nnpfs_vma_close,
 };
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -134,12 +138,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_print_path(struct dentry *dentry)
  *
  */
 
+#if 0
 void
 nnpfs_print_lock(char *s, struct semaphore *sem)
 {
     NNPFSDEB(XDEBLOCK, ("lock: %s sem: %p count: %d\n",
       s, sem, (int)atomic_read(&amp;amp;sem-&amp;gt;count)));
 }
+#endif
 
 /*
  *
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -240,7 +246,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_lookup (struct inode *dir, struct 
 
 msg.header.opcode = NNPFS_MSG_GETNODE;
         
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
 msg.cred.uid = current-&amp;gt;uid;
+#else
+        msg.cred.uid = current_uid();
+#endif
 msg.cred.pag = nnpfs_get_pag();
 msg.parent_handle = d-&amp;gt;handle;
         
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -310,7 +320,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_open_valid(struct inode *vp, u_int
       {
 struct nnpfs_message_open msg;
 msg.header.opcode = NNPFS_MSG_OPEN;
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
 msg.cred.uid = current-&amp;gt;uid;
+#else
+        msg.cred.uid = current_uid();
+#endif
 msg.cred.pag = nnpfs_get_pag();
 msg.handle = xn-&amp;gt;handle;
 msg.tokens = tok;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -425,7 +439,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_fsync_int(struct file *file, u_int
 
 msg.header.opcode = NNPFS_MSG_PUTDATA;
 msg.cred.pag = nnpfs_get_pag();
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
 msg.cred.uid = current-&amp;gt;uid;
+#else
+        msg.cred.uid = current_uid();
+#endif
 msg.handle = xn-&amp;gt;handle;
 msg.flag   = flag;
 msg.offset = off;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -460,9 +478,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_fsync_int(struct file *file, u_int
  *
  */
 
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2, 6, 35)
 static int
 nnpfs_fsync(struct file *file, struct dentry *dentry, int datasync)
+#else
+static int
+nnpfs_fsync(struct file *file, int datasync)
+#endif
 {
+#if LINUX_VERSION_CODE &amp;gt;= KERNEL_VERSION(2, 6, 35)
+    struct dentry *dentry = file-&amp;gt;f_path.dentry;
+#endif
     struct inode *inode = DENTRY_TO_INODE(dentry);
     struct nnpfs *nnpfsp;
     struct nnpfs_node *xn;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -511,7 +537,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_attr_valid(struct inode * vp, u_in
             struct nnpfs_message_getattr msg;
 
             msg.header.opcode = NNPFS_MSG_GETATTR;
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
             msg.cred.uid = current-&amp;gt;uid;
+#else
+            msg.cred.uid = current_uid();
+#endif
             msg.cred.pag = pag;
             msg.handle = xn-&amp;gt;handle;
             error = nnpfs_message_rpc(nnpfsp, &amp;amp;msg.header, sizeof(msg));
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -551,7 +581,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_rights_valid(struct inode * vp, nn
             struct nnpfs_message_getattr msg;
 
             msg.header.opcode = NNPFS_MSG_GETATTR;
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
             msg.cred.uid = current-&amp;gt;uid;
+#else
+            msg.cred.uid = current_uid();
+#endif
             msg.cred.pag = pag;
             msg.handle = xn-&amp;gt;handle;
             error = nnpfs_message_rpc(nnpfsp, &amp;amp;msg.header, sizeof(msg));
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -592,8 +626,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; check_rights (nnpfs_rights rights, int m
  * We don't hold i_mutex.
  */
 
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,27)
 static int
 nnpfs_permission(struct inode *inode, int mode, struct nameidata *nd)
+#else
+static int
+nnpfs_permission(struct inode *inode, int mode)
+#endif
 {
     int error = 0;
     nnpfs_pag_t pag = nnpfs_get_pag();
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -636,7 +675,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_do_getdata(struct nnpfs_node *xn, 
     int error;
 
     msg.header.opcode = NNPFS_MSG_GETDATA;
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     msg.cred.uid = current-&amp;gt;uid;
+#else
+    msg.cred.uid = current_uid();
+#endif
     msg.cred.pag = nnpfs_get_pag();
     msg.handle = xn-&amp;gt;handle;
     msg.tokens = tok;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -903,9 +946,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_create(struct inode *dir, struct d
     XA_CLEAR(&amp;amp;msg.attr);
     XA_SET_MODE(&amp;amp;msg.attr, mode);
     XA_SET_TYPE(&amp;amp;msg.attr, NNPFS_FILE_REG);
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     XA_SET_GID(&amp;amp;msg.attr, current-&amp;gt;fsgid);
+#else
+    XA_SET_GID(&amp;amp;msg.attr, current_fsgid());
+#endif
     msg.mode = 0;/* XXX */
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     msg.cred.uid = current-&amp;gt;uid;
+#else
+    msg.cred.uid = current_uid();
+#endif
     msg.cred.pag = nnpfs_get_pag();
     error = nnpfs_message_rpc(nnpfsp, &amp;amp;msg.header, sizeof(msg));
     if (error == 0)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -946,7 +997,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_unlink (struct inode * dir, struct
     if (strlcpy(msg.name, dentry-&amp;gt;d_name.name, sizeof(msg.name)) &amp;gt;= NNPFS_MAX_NAME)
 return -ENAMETOOLONG;
 
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     msg.cred.uid = current-&amp;gt;uid;
+#else
+    msg.cred.uid = current_uid();
+#endif
     msg.cred.pag = nnpfs_get_pag();
     error = nnpfs_message_rpc(nnpfsp, &amp;amp;msg.header, sizeof(msg));
     if (error == 0)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -991,7 +1046,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_rename (struct inode * old_dir, st
     if (strlcpy(msg.new_name, new_dentry-&amp;gt;d_name.name, sizeof(msg.new_name)) &amp;gt;= NNPFS_MAX_NAME)
 return -ENAMETOOLONG;
 
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     msg.cred.uid = current-&amp;gt;uid;
+#else
+    msg.cred.uid = current_uid();
+#endif
     msg.cred.pag = nnpfs_get_pag();
     error = nnpfs_message_rpc(nnpfsp, &amp;amp;msg.header, sizeof(msg));
     if (error == 0)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1040,9 +1099,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_mkdir(struct inode * dir, struct d
 XA_CLEAR(&amp;amp;msg.attr);
 XA_SET_MODE(&amp;amp;msg.attr, mode);
 XA_SET_TYPE(&amp;amp;msg.attr, NNPFS_FILE_DIR);
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
 XA_SET_GID(&amp;amp;msg.attr, current-&amp;gt;fsgid);
+#else
+        XA_SET_GID(&amp;amp;msg.attr, current_fsgid());
+#endif
 
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
 msg.cred.uid = current-&amp;gt;uid;
+#else
+        msg.cred.uid = current_uid();
+#endif
 msg.cred.pag = nnpfs_get_pag();
 error = nnpfs_message_rpc(nnpfsp, &amp;amp;msg.header, sizeof(msg));
 if (error == 0)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1083,7 +1150,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_rmdir(struct inode * dir, struct d
     msg.parent_handle = xn-&amp;gt;handle;
     if (strlcpy(msg.name, dentry-&amp;gt;d_name.name, sizeof(msg.name)) &amp;gt;= NNPFS_MAX_NAME)
     return -ENAMETOOLONG;
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     msg.cred.uid = current-&amp;gt;uid;
+#else
+    msg.cred.uid = current_uid();
+#endif
     msg.cred.pag = nnpfs_get_pag();
     error = nnpfs_message_rpc(nnpfsp, &amp;amp;msg.header, sizeof(msg));
     if (error == 0)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1128,7 +1199,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int nnpfs_link(struct dentry *old
 if (strlcpy(msg.name, name, sizeof(msg.name)) &amp;gt;= NNPFS_MAX_NAME)
     return -ENAMETOOLONG;
 
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
 msg.cred.uid = current-&amp;gt;uid;
+#else
+        msg.cred.uid = current_uid();
+#endif
 msg.cred.pag = nnpfs_get_pag();
 error = nnpfs_message_rpc(nnpfsp, &amp;amp;msg.header, sizeof(msg));
 if (error == 0)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1157,29 +1232,47 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int nnpfs_symlink(struct inode *d
     xn = VNODE_TO_XNODE(dir);
 
     {
-struct nnpfs_message_symlink msg;
+struct nnpfs_message_symlink *msg = NULL;
 
-msg.header.opcode = NNPFS_MSG_SYMLINK;
-msg.parent_handle = xn-&amp;gt;handle;
-if (strlcpy(msg.name, name, sizeof(msg.name)) &amp;gt;= NNPFS_MAX_NAME)
-    return -ENAMETOOLONG;
-if (strlcpy(msg.contents, symname, sizeof(msg.contents)) &amp;gt;= NNPFS_MAX_SYMLINK_CONTENT)
-    return -ENAMETOOLONG;
-XA_CLEAR(&amp;amp;msg.attr);
-XA_SET_MODE(&amp;amp;msg.attr, 0777);
-XA_SET_TYPE(&amp;amp;msg.attr, NNPFS_FILE_LNK);
-XA_SET_GID(&amp;amp;msg.attr, current-&amp;gt;fsgid);
+msg = kmalloc(sizeof(struct nnpfs_message_symlink), GFP_KERNEL);
 
-msg.cred.uid = current-&amp;gt;uid;
-msg.cred.pag = nnpfs_get_pag();
-error = nnpfs_message_rpc(nnpfsp, &amp;amp;msg.header, sizeof(msg));
+if (!msg)
+  return -ENOMEM;
+
+msg-&amp;gt;header.opcode = NNPFS_MSG_SYMLINK;
+msg-&amp;gt;parent_handle = xn-&amp;gt;handle;
+if (strlcpy(msg-&amp;gt;name, name, sizeof(msg-&amp;gt;name)) &amp;gt;= NNPFS_MAX_NAME) {
+  kfree(msg);
+  return -ENAMETOOLONG;
+}
+if (strlcpy(msg-&amp;gt;contents, symname, sizeof(msg-&amp;gt;contents)) &amp;gt;= NNPFS_MAX_SYMLINK_CONTENT) {
+  kfree(msg);
+  return -ENAMETOOLONG;
+}
+XA_CLEAR(&amp;amp;msg-&amp;gt;attr);
+XA_SET_MODE(&amp;amp;msg-&amp;gt;attr, 0777);
+XA_SET_TYPE(&amp;amp;msg-&amp;gt;attr, NNPFS_FILE_LNK);
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
+XA_SET_GID(&amp;amp;msg-&amp;gt;attr, current-&amp;gt;fsgid);
+#else
+        XA_SET_GID(&amp;amp;msg-&amp;gt;attr, current_fsgid());
+#endif
+
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
+msg-&amp;gt;cred.uid = current-&amp;gt;uid;
+#else
+        msg-&amp;gt;cred.uid = current_uid();
+#endif
+msg-&amp;gt;cred.pag = nnpfs_get_pag();
+error = nnpfs_message_rpc(nnpfsp, &amp;amp;msg-&amp;gt;header, sizeof(struct nnpfs_message_symlink));
 if (error == 0)
-    error = NNPFS_MSG_WAKEUP_ERROR(&amp;amp;msg);
+    error = NNPFS_MSG_WAKEUP_ERROR(msg);
 
 /* XXX should this really be here */
 if (DENTRY_TO_XDENTRY(dentry)-&amp;gt;xd_flags == 0) {
     printk(KERN_EMERG "NNPFS Panic: nnpfs_symlink: dentry not valid\n");
 }
+kfree(msg);
     }
 
     return error;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1398,7 +1491,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_setattr (struct dentry *dentry, st
         struct nnpfs_message_putattr msg;
 
         msg.header.opcode = NNPFS_MSG_PUTATTR;
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
 msg.cred.uid = current-&amp;gt;uid;
+#else
+        msg.cred.uid = current_uid();
+#endif
 msg.cred.pag = nnpfs_get_pag();
         msg.handle = xn-&amp;gt;handle;
         nnpfs_iattr2attr(xn, attr, &amp;amp;msg.attr);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1545,6 +1642,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_d_delete(struct dentry *dentry)
     return 0;
 }
 
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2, 6, 23)
+
 static ssize_t
 nnpfs_sendfile(struct file *file, loff_t *ppos, size_t count,
        read_actor_t actor, void *target)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1568,6 +1667,33 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_sendfile(struct file *file, loff_t
     return error;
 }
 
+#else
+
+static ssize_t
+nnpfs_splice_read(struct file *file, loff_t *ppos,
+  struct pipe_inode_info *pipe, size_t count,
+  unsigned int flags)
+{
+    int error = 0;
+    struct inode *inode = file-&amp;gt;f_dentry-&amp;gt;d_inode;
+    struct nnpfs_node *xn = VNODE_TO_XNODE(inode);
+    
+    if (xn != NULL)
+NNPFSDEB(XDEBVNOPS, ("nnpfs_sendfile: tokens: 0x%x\n", xn-&amp;gt;tokens));
+
+    error = nnpfs_data_valid(inode, NNPFS_DATA_R, *ppos, *ppos + count);
+    if (error) {
+NNPFSDEB(XDEBVNOPS, ("nnpfs_sendfile: data not valid %d\n", error));
+return error;
+    }
+    error = file-&amp;gt;f_op-&amp;gt;splice_read(file, ppos, pipe, count, flags);
+
+    NNPFSDEB(XDEBVNOPS, ("nnpfs_sendfile: error = %d\n", error));
+    return error;
+}
+
+#endif /* LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2, 6, 23) */
+
 /*
  *
  *
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1639,11 +1765,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_write_backpage(struct page *page, 
 struct address_space *mapping = backfile-&amp;gt;f_mapping;
 unsigned len = PAGE_CACHE_SIZE;
 struct page *backpage;
+#if LINUX_VERSION_CODE &amp;gt;= KERNEL_VERSION(2,6,24)
+void *fsdata;
+#endif
 unsigned long offset;
 
 int error;
 
 do {
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,24)
 backpage = grab_cache_page(mapping, nnpfs_get_backindex(page));
 if (!backpage) {
 printk("nnpfs_write_backpage: no page\n");
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1652,21 +1782,36 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_write_backpage(struct page *page, 
 
 error = mapping-&amp;gt;a_ops-&amp;gt;prepare_write(backfile, backpage,
       0, len);
+#else
+error = pagecache_write_begin(backfile, mapping, 0, len,
+AOP_FLAG_UNINTERRUPTIBLE, &amp;amp;backpage, &amp;amp;fsdata);
+#endif
 if (!error) {
 copy_highpage(backpage, page);
 flush_dcache_page(backpage);
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,24)
 error = mapping-&amp;gt;a_ops-&amp;gt;commit_write(backfile, backpage,
      0, len);
+#else
+error = pagecache_write_end(backfile, mapping, 0, len,
+len, backpage, fsdata);
+if (error &amp;gt; 0)
+error = 0;
+#endif
 }
 if (error == AOP_TRUNCATED_PAGE) {
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,24)
 page_cache_release(backpage);
+#endif
 continue;
 }
 } while (0);
 
 offset = page_offset(backpage);
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,24)
 unlock_page(backpage);
 page_cache_release(backpage);
+#endif
 
 if (error)
 printk("nnpfs_write_backpage: EIO\n");
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1872,6 +2017,34 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_prepare_write(struct file *file, s
 return ret;
 }
 
+#if LINUX_VERSION_CODE &amp;gt;= KERNEL_VERSION(2,6,28)
+
+static int
+nnpfs_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
+unsigned len, unsigned flags, struct page **pagep, void **fsdata)
+{
+struct page *page;
+pgoff_t index;
+unsigned from;
+
+index = pos &amp;gt;&amp;gt; PAGE_CACHE_SHIFT;
+from = pos &amp;amp; (PAGE_CACHE_SIZE - 1);
+
+#ifndef AOP_FLAG_NOFS
+page = __grab_cache_page(mapping, index);
+#else
+page = grab_cache_page_write_begin(mapping, index, flags);
+#endif
+if (!page)
+return -ENOMEM;
+
+*pagep = page;
+
+return nnpfs_prepare_write(file, page, from, from+len);
+}
+
+#endif
+
 static int
 nnpfs_commit_write(struct file *file, struct page *page, unsigned from, unsigned to)
 {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1902,14 +2075,45 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_commit_write(struct file *file, st
     return 0;
 }
 
+#if LINUX_VERSION_CODE &amp;gt;= KERNEL_VERSION(2,6,28)
+
+static int
+nnpfs_write_end(struct file *file, struct address_space *mapping, loff_t pos,
+unsigned len, unsigned copied, struct page *page, void *fsdata)
+{
+unsigned from = pos &amp;amp; (PAGE_CACHE_SIZE - 1);
+
+/* zero the stale part of the page if we did a short copy */
+if (copied &amp;lt; len) {
+void *kaddr = kmap_atomic(page, KM_USER0);
+memset(kaddr + from + copied, 0, len - copied);
+flush_dcache_page(page);
+kunmap_atomic(kaddr, KM_USER0);
+}
+
+nnpfs_commit_write(file, page, from, from+copied);
+
+unlock_page(page);
+page_cache_release(page);
+
+return copied;
+}
+
+#endif
+
 #if LINUX_VERSION_CODE &amp;gt;= KERNEL_VERSION(2,6,18)
 const
 #endif
 struct address_space_operations nnpfs_aops = {
 .readpage = nnpfs_readpage,
 .writepage = nnpfs_writepage,
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,28)
 .prepare_write = nnpfs_prepare_write,
 .commit_write = nnpfs_commit_write,
+#else
+.write_begin = nnpfs_write_begin,
+.write_end = nnpfs_write_end,
+#endif
 };
 
 /*
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1924,7 +2128,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct file_operations nnpfs_file_operat
     .flush= nnpfs_flush,
     .release= nnpfs_release_file,
     .fsync= nnpfs_fsync,
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2, 6, 23)
     .sendfile= nnpfs_sendfile,
+#else
+    .splice_read = nnpfs_splice_read,
+#endif
 };
 
 struct file_operations nnpfs_dead_operations = {
diff -uprN arla-0.90/nnpfs/linux/nnpfs_message.c arla-0.90-new/nnpfs/linux/nnpfs_message.c
--- arla-0.90/nnpfs/linux/nnpfs_message.c2007-01-09 17:33:31.000000000 +0100
+++ arla-0.90-new/nnpfs/linux/nnpfs_message.c2010-07-11 17:18:26.572458961 +0200
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -45,7 +45,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;linux/mount.h&amp;gt;
 
 #ifdef RCSID
-RCSID("$Id: nnpfs_message.c,v 1.143.2.1 2007/01/09 16:33:31 tol Exp $");
+RCSID("$Id: nnpfs_message.c,v 1.143 2006/12/11 16:40:24 tol Exp $");
 #endif
 
 static void
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -605,12 +605,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gc_block(struct nnpfs *nnpfsp,
     }
 
     if (!nnpfs_block_have_p(xn, offset)) {
-#if 0   /* happens when daemon sends several messages for same block */
 printk(KERN_EMERG "NNPFS/gc_block: "
        "ENOENT (%d,%d,%d,%d) 0x%llx\n", 
        xn-&amp;gt;handle.a, xn-&amp;gt;handle.b, xn-&amp;gt;handle.c, xn-&amp;gt;handle.d, 
        (unsigned long long)offset);
-#endif
 return -ENOENT;
     }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -737,12 +735,23 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_message_version(struct nnpfs *nnpf
    "nnpfs_message_version failed path_lookup, "
    "errno: %d\n", error);
 } else {
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,25)
     nnpfsp-&amp;gt;cacheroot = mntget(nd.mnt);
     nnpfsp-&amp;gt;cachedir = dget(nd.dentry);
     path_release(&amp;amp;nd);
+#else
+    nnpfsp-&amp;gt;cacheroot = mntget(nd.path.mnt);
+    nnpfsp-&amp;gt;cachedir = dget(nd.path.dentry);
+    path_put(&amp;amp;nd.path);
+#endif
     
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     nnpfsp-&amp;gt;uid = current-&amp;gt;fsuid;
     nnpfsp-&amp;gt;gid = current-&amp;gt;fsgid;
+#else
+            nnpfsp-&amp;gt;uid = current_fsuid();
+            nnpfsp-&amp;gt;gid = current_fsgid();
+#endif
 
     /* XXX we should validate these values */
     nnpfs_blocksize = blocksize;
diff -uprN arla-0.90/nnpfs/linux/nnpfs_syscalls.c arla-0.90-new/nnpfs/linux/nnpfs_syscalls.c
--- arla-0.90/nnpfs/linux/nnpfs_syscalls.c2007-01-03 15:26:27.000000000 +0100
+++ arla-0.90-new/nnpfs/linux/nnpfs_syscalls.c2010-07-11 18:49:01.229639299 +0200
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -147,10 +147,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int nnpfs_sec_registered = 0;
 #define SEC2PAG(s) (nnpfs_pag_t)(unsigned long)(s)
 #define PAG2SEC(p) (void *)(unsigned long)(p)
 
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,24)
+
 static int
 nnpfs_sec_task_alloc(struct task_struct *p)
 {
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     nnpfs_pag_t pag = SEC2PAG(current-&amp;gt;security);
+#else
+    nnpfs_pag_t pag = SEC2PAG(current_security());
+#endif
     if (pag)
 p-&amp;gt;security = PAG2SEC(pag);
     return 0;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -164,35 +170,55 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_sec_task_free(struct task_struct *
 p-&amp;gt;security = NULL;
 }
 
+#endif
+
 static nnpfs_pag_t
 nnpfs_get_pag_sec(void)
 {
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     nnpfs_pag_t pag = SEC2PAG(current-&amp;gt;security);
+#else
+    nnpfs_pag_t pag = SEC2PAG(current_security());
+#endif
     if (pag)
 return pag;
 
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     return current-&amp;gt;uid;
+#else
+    return current_uid();
+#endif
 }
 
 static int
 nnpfs_set_pag_sec(void)
 {
     static nnpfs_pag_t pagnum = NNPFS_PAG_LLIM;
+#if LINUX_VERSION_CODE &amp;gt;= KERNEL_VERSION(2,6,29)
+    struct cred *cred;
+#endif
 
     if (pagnum == NNPFS_PAG_ULIM)
 return -ENOMEM;
     /* pagnum = NNPFS_PAG_LLIM; */
     
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     current-&amp;gt;security = PAG2SEC(pagnum);
+#else
+    cred = (struct cred *) current-&amp;gt;cred;
+    cred-&amp;gt;security = PAG2SEC(pagnum);
+#endif
     pagnum++;
     return 0;
 }
 
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,24)
 static struct security_operations nnpfs_sec_ops = {
     .task_alloc_security = nnpfs_sec_task_alloc,
     .task_free_security = nnpfs_sec_task_free,
 //    .task_reparent_to_init = nnpfs_sec_reparent_to_init,
 };
+#endif
 
 #endif /* CONFIG_SECURITY */
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -222,11 +248,18 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; find_pag(struct group_info *gi)
 static nnpfs_pag_t
 nnpfs_get_pag_group(void)
 {
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     struct group_info *gi = current-&amp;gt;group_info;
     nnpfs_pag_t ret = current-&amp;gt;uid;
+#else
+    struct group_info *gi = get_current_groups();
+    nnpfs_pag_t ret = current_uid();
+#endif
     int i;
 
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     get_group_info(gi);
+#endif
 
     i = find_pag(gi);
     if (i != NNPFS_PAG_NOTFOUND)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -242,13 +275,23 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_get_pag_group(void)
 static int
 store_pag(nnpfs_pag_t pagnum)
 {
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     struct group_info *old_gi = current-&amp;gt;group_info;
+#else
+   struct group_info *old_gi = get_current_groups();
+#endif
     struct group_info *new_gi;
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,25)
     int nblocks, count;
+#else
+    unsigned int nblocks, count;
+#endif
     int found = 0;
     int i, k;
     
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)    
     get_group_info(old_gi);
+#endif
 
     i = find_pag(old_gi);
     if (i != NNPFS_PAG_NOTFOUND)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -317,7 +360,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_get_pag()
     return nnpfs_get_pag_group();
 #endif /* GROUPPAGS */
 
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     return current-&amp;gt;uid;
+#else
+    return current_uid();
+#endif
 }
 
 static inline int
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -528,7 +575,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; user_path2dentry (struct nameidata *nd, 
     putname(kname);
     if (error)
 return ERR_PTR(error);
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,25)
     return nd-&amp;gt;dentry;
+#else
+    return nd-&amp;gt;path.dentry;
+#endif
 }
 
 asmlinkage long
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -540,11 +591,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sys_afs_int (int operation,
 {
     long error = 0;
     struct arlaViceIoctl vice_ioctl; 
-    struct nnpfs_message_pioctl msg;
+    struct nnpfs_message_pioctl *msg = NULL;
     struct nnpfs_message_wakeup *msg2;
     struct dentry *dentry = NULL;
     struct nameidata nd;
-    
+
+    msg = kmalloc(sizeof(struct nnpfs_message_pioctl), GFP_KERNEL);
+
+    if (!msg)
+      return -ENOMEM;
+
     lock_kernel();
 
     NNPFSDEB(XDEBSYS, ("sys_afs kernel locked\n"));
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -575,7 +631,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sys_afs_int (int operation,
     goto unlock;
 }
 if (vice_ioctl.in_size != 0) {
-    if(copy_from_user(&amp;amp;msg.msg,
+    if(copy_from_user(&amp;amp;msg-&amp;gt;msg,
       vice_ioctl.in,
       vice_ioctl.in_size) != 0) {
 error = -EFAULT;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -628,19 +684,23 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sys_afs_int (int operation,
 error = -EINVAL;
 goto unlock;
     }
-    msg.handle = xn-&amp;gt;handle;
+    msg-&amp;gt;handle = xn-&amp;gt;handle;
 }
 
-msg.header.opcode = NNPFS_MSG_PIOCTL;
-msg.opcode = a_opcode;
+msg-&amp;gt;header.opcode = NNPFS_MSG_PIOCTL;
+msg-&amp;gt;opcode = a_opcode;
 
-msg.insize   = vice_ioctl.in_size;
-msg.outsize  = vice_ioctl.out_size;
-msg.cred.uid = current-&amp;gt;uid;
-msg.cred.pag = nnpfs_get_pag();
+msg-&amp;gt;insize   = vice_ioctl.in_size;
+msg-&amp;gt;outsize  = vice_ioctl.out_size;
+#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
+msg-&amp;gt;cred.uid = current-&amp;gt;uid;
+#else
+        msg-&amp;gt;cred.uid = current_uid();
+#endif
+msg-&amp;gt;cred.pag = nnpfs_get_pag();
 
-error = nnpfs_message_rpc(&amp;amp;nnpfs[0], &amp;amp;msg.header, sizeof(msg)); /* XXX */
-msg2 = (struct nnpfs_message_wakeup *) &amp;amp;msg;
+error = nnpfs_message_rpc(&amp;amp;nnpfs[0], &amp;amp;msg-&amp;gt;header, sizeof(struct nnpfs_message_pioctl)); /* XXX */
+msg2 = (struct nnpfs_message_wakeup *) msg;
 if (error == 0)
     error = msg2-&amp;gt;error;
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -675,11 +735,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sys_afs_int (int operation,
     
  unlock:
     if (dentry)
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,25)
 path_release(&amp;amp;nd);
+#else
+path_put(&amp;amp;nd.path);
+#endif
 
     NNPFSDEB(XDEBSYS, ("nnpfs_syscall returns error: %ld\n", error));
 
     NNPFSDEB(XDEBSYS, ("sys_afs kernel unlock\n"));
+    kfree(msg);
     unlock_kernel();
 
     return error;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -780,20 +845,32 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int nnpfs_init_procfs(void)
 {
     struct proc_dir_entry *entry;
     
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,26)
     nnpfs_procfs_dir = proc_mkdir(NNPFS_PROC_DIR, proc_root_fs);
+#else
+    nnpfs_procfs_dir = proc_mkdir("fs/" NNPFS_PROC_DIR, NULL);
+#endif
     if (nnpfs_procfs_dir == NULL)
 return -ENOMEM;
     
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,30)
     nnpfs_procfs_dir-&amp;gt;owner = THIS_MODULE;
+#endif
     
     entry = create_proc_entry(NNPFS_PROC_NODE, 0666, nnpfs_procfs_dir);
     if (entry == NULL) {
 NNPFSDEB(XDEBSYS, ("nnpfs_init_procfs: no node\n"));
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,26)
 remove_proc_entry(NNPFS_PROC_DIR, proc_root_fs);
+#else
+remove_proc_entry("fs/" NNPFS_PROC_DIR, NULL);
+#endif
 return -ENOMEM;
     }
     
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,30)
     entry-&amp;gt;owner = THIS_MODULE;
+#endif
     entry-&amp;gt;proc_fops = &amp;amp;nnpfs_procfs_fops;
 
 #ifdef SYSCALLCOMPAT
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -815,7 +892,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void nnpfs_exit_procfs(void)
     }
 #endif /* SYSCALLCOMPAT */
     remove_proc_entry(NNPFS_PROC_NODE, nnpfs_procfs_dir);
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,26)
     remove_proc_entry(NNPFS_PROC_DIR, proc_root_fs);
+#else
+    remove_proc_entry("fs/" NNPFS_PROC_DIR, NULL);
+#endif
 }
 
 #ifdef GROUPPAGS
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -840,12 +921,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void
 install_afs_syscall(void)
 {
 #ifdef CONFIG_SECURITY
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,24)
     if (register_security(&amp;amp;nnpfs_sec_ops))
 NNPFSDEB(XDEBSYS,
  ("install_afs_syscall: nnpfs_init_sec failed\n"));
     else
 nnpfs_sec_registered = 1;
 #endif
+#endif
 
     nnpfs_init_procfs();
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -888,9 +971,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; restore_afs_syscall (void)
 #endif /* SYSCALLHACK */
 
 #ifdef CONFIG_SECURITY
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,24)
     if (nnpfs_sec_registered)
 if (unregister_security(&amp;amp;nnpfs_sec_ops))
     printk(KERN_EMERG "nnpfs_exit_sec: couldn't unregister\n");
+#endif
 #endif /* !CONFIG_SECURITY */
 
 #ifdef GROUPPAGS
diff -uprN arla-0.90/nnpfs/linux/nnpfs_syscalls-lossage.c arla-0.90-new/nnpfs/linux/nnpfs_syscalls-lossage.c
--- arla-0.90/nnpfs/linux/nnpfs_syscalls-lossage.c2006-12-11 17:31:45.000000000 +0100
+++ arla-0.90-new/nnpfs/linux/nnpfs_syscalls-lossage.c2010-07-11 17:18:26.572458961 +0200
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -63,6 +63,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; const char * __attribute__((weak))
     unsigned long *offset,
     char **modname, char *namebuf);
 
+#if LINUX_VERSION_CODE &amp;gt; KERNEL_VERSION(2,6,18)
+#ifdef __x86_64__
+extern rwlock_t tasklist_lock __attribute__((weak));
+#endif
+#endif
 static void **
 get_start_addr(void) {
 #ifdef __x86_64__
diff -uprN arla-0.90/nnpfs/linux/nnpfs_vfsops.c arla-0.90-new/nnpfs/linux/nnpfs_vfsops.c
--- arla-0.90/nnpfs/linux/nnpfs_vfsops.c2006-12-11 17:43:35.000000000 +0100
+++ arla-0.90-new/nnpfs/linux/nnpfs_vfsops.c2010-07-11 17:18:26.577958688 +0200
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -49,9 +49,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; RCSID("$Id: nnpfs_vfsops.c,v 1.109 2006/
 
 struct nnpfs nnpfs[NNNPFS];
 
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,25)
 static void nnpfs_read_inode(struct inode *inode);
+#endif
 static void nnpfs_put_super(struct super_block *sb);
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,25)
 static void nnpfs_put_inode(struct inode *inode);
+#endif
 static void nnpfs_write_super(struct super_block * sb);
 
 #if LINUX_VERSION_CODE &amp;gt;= KERNEL_VERSION(2,6,18)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -61,8 +65,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int nnpfs_statfs(struct super_blo
 #endif
 
 static struct super_operations nnpfs_sops = { 
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,25)
     read_inode: nnpfs_read_inode,
     put_inode: nnpfs_put_inode,
+#endif
     alloc_inode: nnpfs_node_alloc,
     destroy_inode: nnpfs_node_free,
     drop_inode: generic_delete_inode,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -189,7 +195,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_read_super (struct super_block * s
 if (error)
     ddev = ERR_PTR(error);
 else
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,25)
     ddev = nd.dentry;
+#else
+    ddev = nd.path.dentry;
+#endif
 
 if (!IS_ERR(ddev)) {
     minordevice = MINOR(ddev-&amp;gt;d_inode-&amp;gt;i_rdev);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -273,6 +283,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_put_super(struct super_block *sb)
     NNPFSDEB(XDEBVFOPS, ("nnpfs_put_super exiting\n"));
 }
 
+#if LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,25)
 static void
 nnpfs_read_inode(struct inode *inode)
 {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -339,6 +350,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_put_inode(struct inode *inode)
 
     up(&amp;amp;nnpfsp-&amp;gt;inactive_sem);
 }
+#endif // LINUX_VERSION_CODE &amp;lt; KERNEL_VERSION(2,6,25)
 
 static int
 nnpfs_statfs_int(struct super_block *sb, struct kstatfs *buf)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -352,7 +364,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nnpfs_statfs_int(struct super_block *sb,
     tmp.f_bavail  = 1024*1024*2-50;
     tmp.f_files   = 1024*1024;
     tmp.f_ffree   = 1024*1024-100;
+    tmp.f_fsid.val[0] = 0;
+    tmp.f_fsid.val[1] = 0;
     tmp.f_namelen = NAME_MAX;
+    tmp.f_frsize  = 0;
+    tmp.f_spare[0] = 0;
+    tmp.f_spare[1] = 0;
+    tmp.f_spare[2] = 0;
+    tmp.f_spare[3] = 0;
+    tmp.f_spare[4] = 0;
     *buf = tmp;
     return 0;
 }
_______________________________________________
Arla-drinkers mailing list
Arla-drinkers&amp;lt; at &amp;gt;stacken.kth.se
https://lists.stacken.kth.se/mailman/listinfo/arla-drinkers
&lt;/pre&gt;</description>
    <dc:creator>Bo Brantén</dc:creator>
    <dc:date>2010-07-11T16:58:19</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1409">
    <title>Re: SV: PATCH: Arla CVS Current on Linux 2.6.24-2.6.35-rc1</title>
    <link>http://permalink.gmane.org/gmane.comp.file-systems.arla.general/1409</link>
    <description>&lt;pre&gt;

Yes, the reference count is decremented with put_group_info() but it is 
two possible ways to fix it, I think the second one is the most correct:

nnpfs_get_pag_group(void)
{
#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     struct group_info *gi = current-&amp;gt;group_info;
     nnpfs_pag_t ret = current-&amp;gt;uid;
#else
     struct group_info *gi = get_current_groups();
     nnpfs_pag_t ret = current_uid();
#endif
     int i;

     get_group_info(gi);

     i = find_pag(gi);
     if (i != NNPFS_PAG_NOTFOUND)
         ret = GROUP_AT(gi, i);

     put_group_info(gi);
#if LINUX_VERSION_CODE &amp;gt; KERNEL_VERSION(2,6,28)
     put_group_info(gi);
#endif

     NNPFSDEB(XDEBSYS, ("nnpfs_get_pag_group: returning %u\n", ret));
     return ret;
}

nnpfs_get_pag_group(void)
{
#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     struct group_info *gi = current-&amp;gt;group_info;
     nnpfs_pag_t ret = current-&amp;gt;uid;
#else
     struct group_info *gi = get_current_groups();
     nnpfs_pag_t ret = current_uid();
#endif
     int i;

#if LINUX_VERSION_CODE &amp;lt;= KERNEL_VERSION(2,6,28)
     get_group_info(gi);
#endif

     i = find_pag(gi);
     if (i != NNPFS_PAG_NOTFOUND)
         ret = GROUP_AT(gi, i);

     put_group_info(gi);

     NNPFSDEB(XDEBSYS, ("nnpfs_get_pag_group: returning %u\n", ret));
     return ret;
}

Bo Branten
&lt;/pre&gt;</description>
    <dc:creator>Bo Brantén</dc:creator>
    <dc:date>2010-07-11T16:29:38</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.file-systems.arla.general">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.file-systems.arla.general</link>
  </textinput>
</rdf:RDF>
