The db.fsyncLock() docs say:
Note: The database cannot be locked with db.fsyncLock() while profiling is enabled. You must disable profiling before locking the database with db.fsyncLock(). Disable profiling using db.setProfilingLevel() as follows in the mongo shell...
I was able to lock a 2.4.1 database while profiling was enabled (mode 2). Issuing queries while locked resulted in no new data entering the system.profile collection, and once the DB was unlocked, profiling continued as expected.