On 13.12.23 21:29, Kinsey Moore wrote:
     > The lock is not available to the delayed work caller without
    modifying
     > the JFFS2 code and, while I'm sure it would work fine from a data
     > integrity perspective, it was not intended to operate that way. If I
     > were going to go this direction to reduce complexity, it might
    make more
     > sense to disable delayed write support and force all writes to be
     > immediate such that it behaves like NOR. The downside to reduced
    locking
     > granularity or delayed write removal would be additional wear on the
     > NAND flash.

    In which place in the code do you have problems to get the fs info
    block? I am absolutely not in favour of having the internal locking
    enabled for JFFS2. We use this file system on lower end controllers.

The call to submit delayed work does not provide the FS info as a parameter:
void jffs2_queue_delayed_work(struct delayed_work *work, int delay_ms);
This is wrapped as:
#define queue_delayed_work(workqueue, delayed_work, delay_ms) ...

The initialization call for delayed work does not have direct access to the FS info, either:
#define INIT_DELAYED_WORK(delayed_work, delayed_workqueue_callback) ...

From the struct work_struct you get to the struct delayed_work via

static inline struct delayed_work *
to_delayed_work(struct work_struct *work)
{

        return container_of(work, struct delayed_work, work);
}

from this you get to struct jffs2_sb_info via container_of()

static struct jffs2_sb_info *work_to_sb(struct work_struct *work)
{
        struct delayed_work *dwork;

        dwork = to_delayed_work(work);
        return container_of(dwork, struct jffs2_sb_info, wbuf_dwork);
}

From struct jffs2_sb_info you get via OFNI_BS_2SFFJ() the struct super_block which is already RTEMS-specific. You can add the delayed work support to struct super_block and simply use the instance lock in your delayed work thread. For the queues you can use ISR locks and events, or a mutex with a condition variable.

--
embedded brains GmbH & Co. KG
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.hu...@embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to